unsigned int的补充

Kev*_*rds 1 c c++ bit-manipulation

我最近遇到了以下代码:

unsigned short int a = 0xffff;
~a;
printf("%x", a);
Run Code Online (Sandbox Code Playgroud)

它的输出是:

0xffff
Run Code Online (Sandbox Code Playgroud)

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

0x0000
Run Code Online (Sandbox Code Playgroud)

那么,为什么输出0xffff呢?

gna*_*729 6

你忘了将结果分配回来.就像

int a = 3; 
a + 2; 
printf ("%d\n", a);
Run Code Online (Sandbox Code Playgroud)

将打印3而不是5.