Complement of unsigned int

Complement of unsigned int

本文关键字:int unsigned of Complement      更新时间:2023-10-16

我最近看到了下面一段代码:

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

输出为:

0xffff

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

0x0000

为什么输出是0xffff呢?

你忘了把结果赋值给a,就像

int a = 3; 
a + 2; 
printf ("%dn", a);

将打印3而不是5。

因为您没有将其分配给a,值只是被丢弃,尝试

a = ~a;

与大多数其他操作符一样,~不会就地修改变量,而是"返回"修改后的值作为结果。想想一元减号:如果你想改变一个变量的符号,你不用

-a;

,

a=-a;

同样适用于位not操作符;要得到预期的结果,执行以下命令:

a=~a;
相关文章: