按位运算产生意外输出

Bitwise operation producing unexpected output

#include<stdio.h>
int main(void)
{
    int a=0x11;
    printf("\n %d",a);
    int b=10;
    int c=(a&b);
    printf("\t %d",c);
    return 0;
}

这个程序的o/p是

17 0

但我希望程序对位进行操作,从而导致

17 16

为什么输出是0?

在您的例子中,b 的十进制值为 10,而不是 16 进制的 10。更改

 int b=10;

 int b=0x10;

用二进制表示0x11

0001 0001

10

0000 1010

如您所见,这些值没有共同的 1 位。因此,这些值之间的按位与运算结果为0。您为什么期望它产生 16