我不明白为什么 3 & 0x1111 = 1 ?看起来:



然而,当我在 ubuntu 14.04 上尝试这个时,我得到了 3 & 0x1111=1 。为什么?

int main() {
  unsigned int a =3;
  printf("size of a= %lu\n",sizeof(a));
  printf("value of 3 & 0x1111= %d\n",a & 0x1111);

  return 0;
}

最佳答案

将它们都转换为二进制:

0x1111 = 0001 0001 0001 0001
3      = 0000 0000 0000 0011

当你一点一点地对它们进行 & 时,你还期望什么?

关于c - 为什么 (3 & 0x1111) = 1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32254866/

10-11 22:10