这个第一个输出有符号的m为什么是-1,我自己刚开始理解的时候以为无符号就都是正的,但应该不是,这该怎么去理解啊
输出-1是因为范围越界了。你的系统环境是16位的吧,正常32位和64位环境是不会越界的。16位系统无符号整型的范围是0 -- 2^16-1(65535),有符号整型的范围是负的2^15-1 -- 正的2^15-1,%d是按有符号的格式打印,65535已经超过范围了,数字都是以补码形式保存的,无符号的65535转换成有符号的数正好是-1。有符号整型的最高位用来标记符号位,1代表负,0代表正。,-1的源码1000000000000001,反码是1111111111111110,补码是11111111111111111,正好是无符号的65535。
%u输出 %d是有符号的