What will the following code output?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
int main() {
    int a = 5, b = 3;
    printf("%d", a & b);
    return 0;
}

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: "1". Một dấu và đơn lẻ là phép và theo từng bit, khác hẳn hai dấu và của phép và logic. Viết 5 ở hệ hai là 0101, viết 3 là 0011; ghép từng cặp bit cùng vị trí, chỉ chỗ nào cả hai đều bằng 1 mới cho 1, nên kết quả là 0001, tức 1, và printf in nó bằng %d. Số "2" ở hệ hai là 0010, nó đòi bit thứ hai bằng 1 trong cả hai toán hạng, nhưng 5 không có bit đó. Số "3" là chính giá trị của b, ứng với việc hiểu nhầm dấu và thành phép lấy toán hạng bên phải. Số "5" là chính giá trị của a, ứng với việc hiểu nhầm thành phép lấy toán hạng bên trái; cả hai cách hiểu đó đều bỏ qua việc so từng bit, thứ làm nên bản chất của toán tử này.

Cùng phần 2

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