What will this code output?
4 phương ánCó giải thích
int a = 5, b = 10;
printf("%d", !(a > b || b == 10));Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "0". Bên trong cặp ngoặc đơn, phép so sánh a lớn hơn b cho 0 vì 5 không lớn hơn 10, còn phép so sánh b bằng 10 cho 1 vì đúng; phép hoặc luận lý của hai giá trị đó cho 1. Cuối cùng phép phủ định đảo một giá trị khác không thành 0, nên số in ra là 0. Nói gọn thì phủ định một biểu thức đúng luôn cho 0, và kết quả của mọi phép luận lý trong C chỉ nhận hai giá trị 0 hoặc 1. Ý "1" sai vì nó ứng với trường hợp biểu thức trong ngoặc là sai, trong khi nhánh b bằng 10 đã thoả nên cả phép hoặc đã đúng. Ý "5" sai vì không có đường nào để giá trị của a lọt ra kết quả, phép phủ định luôn trả về 0 hoặc 1. Ý "-1" sai vì chuẩn không cho phép phép phủ định sinh ra số âm.
Cùng phần 2
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây