问一下关于c语言中%d和%u的区别

img

img


为什么在两个程序中其他都一样,但唯独在%d是时v=1,而%u时就是那么奇怪的一个数。
u是以无符号十进制输出
d是以带符号十进制输出,为什么输出结果差了这么多

v=-1的时。
负数是补码的形式存储的因为。
-1
正码10000...1
反码111111...0
补码111111...1
如果需要已无符号整数输出的话,即%u
最高位就不是符号位了。
因为有32个1,从第0位到第31位都是1,这个数就是2^32-1=4,294,967,295