What does this code print?

4 phương ánCó giải thích
Đề bài
int n = 30, m = 5;
float x = 3.5F, y = 8.12F;
printf("%d, %d\n", (n < m || x >= y), !(x > y));

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "0, 1". Hai biểu thức trong printf đều là biểu thức luận lý, nên mỗi cái chỉ cho ra số nguyên 0 hoặc 1. Với n bằng 30 và m bằng 5 thì n nhỏ hơn m là sai; với x bằng 3.5 và y bằng 8.12 thì x lớn hơn hoặc bằng y cũng sai, nên phép hoặc của hai điều sai cho 0. Biểu thức thứ hai: x lớn hơn y là sai, tức giá trị 0, nên phủ định nó cho 1. Vậy chương trình in 0, 1. Lựa chọn "1, 0" đảo ngược hai kết quả, chỉ đúng nếu 30 nhỏ hơn 5 hoặc 3.5 lớn hơn 8.12. Lựa chọn "1, 1" đòi phép hoặc phải có ít nhất một vế đúng, điều không xảy ra ở đây vì cả hai vế đều sai. Lựa chọn "0, 0" đòi x lớn hơn y là đúng để phủ định cho ra 0, nhưng 3.5 nhỏ hơn 8.12 nên phủ định phải cho 1.

Cùng phần 2

Xuất hiện trong 1 bộ đề