若int类型数据占两个字节,则以下述语句的输出为
int k=-1;
printf("%d,%u/n",k,k);
负数在存储时采用的补码形式存储的。-N,则先计算N的反码,再加1进行存储。
-1在两个字节存储时,先取1的反码,即0B 1111 1111 1111 1110,再加1,得到0B 1111 1111 1111 1111,即0xFF FF
所以当0xFF FF按照%d打印的时候,打印出来是-1
按照%u无符号数打印的时候,打印出来是65535
放在编译器跑一下不就出来了吗
望采纳
-1,4294967295/n
该图中DEC是int为4个字节时,%u的值
即4294967295
该图中DEC是int为2个字节时,%u的值
-1跟65535,因为只有两个字节所以取16位无符号的最大值65535。