能解决一下问题吗?不会算一下的题

若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

放在编译器跑一下不就出来了吗

望采纳

img

-1,4294967295/n

该图中DEC是int为4个字节时,%u的值

img

即4294967295

该图中DEC是int为2个字节时,%u的值

img


即65535

-1跟65535,因为只有两个字节所以取16位无符号的最大值65535。