unsigned int的补充

时间:2014-07-17 23:14:31

标签: c++ c bit-manipulation

我最近遇到了以下一段代码:

unsigned short int a = 0xffff;
~a;
printf("%x", a);

它的输出是:

0xffff

根据我所学到的,~a应该翻转给出以下内容的所有内容:

0x0000

那么,为什么输出0xffff

3 个答案:

答案 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;