我的机子的unsigned short 是2个字节。16位。
A=10 的存储形式为 0000 0000 0000 1010
进行~A,取反后为 1111 1111 1111 0101.接着的那个printf就是输出这个数的十进制形式,就是:4294967285(无符号输出)。
char 是1个字节,8位。十进制的127 在二进制中表示为 0111 1111 。128为,1000 0000 。这个数在有符号的情况下,是个负数,刚好是-128。
printf("c=%d\n",c); 的输出就是-128。若楼主的 char c=128; 改成 char c=129.此时,其二进制形式为 1000 0001 。 在有符号时,这个数是-127 。