我最近遇到了以下一段代码:
unsigned short int a = 0xffff;
~a;
printf("%x", a);
它的输出是:
0xffff
根据我所学到的,~a
应该翻转给出以下内容的所有内容:
0x0000
那么,为什么输出0xffff
?
答案 0 :(得分:6)
您忘了将结果分配回来。就像
int a = 3;
a + 2;
printf ("%d\n", a);
将打印3而不是5.
答案 1 :(得分:2)
因为您没有将其分配给a
,所以只会丢弃值,请尝试
a = ~a;
答案 2 :(得分:0)
与大多数其他运算符一样,〜不会就地修改变量,而是“返回”修改后的值作为结果。考虑一元减号:如果你想将符号改为你不做的变量
-a;
但
a=-a;
对于按位非运算符也是如此;得到你期望的结果:
a=~a;