c为什么会打印一个负数?

前端之家收集整理的这篇文章主要介绍了c为什么会打印一个负数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我期待这个打印一个非常大的数字和相同的数字-1,但它只打印-1和-2,为什么这个?
fprintf(stderr,"%d\n",0xffffffff);
fprintf(stderr,0xfffffffe);

解决方法

%d格式是有符号整数(十进制).使用 two’s complement存储整数,这意味着高位(8000 0000)以某种方式表示值的符号.

从3开始倒数,值是:

0000 0003 = 3
0000 0002 = 2
0000 0001 = 1
0000 0000 = 0
FFFF FFFF = -1
FFFF FFFE = -2

等等

如果希望FFFF FFFF显示为大的正数,请使用%u(无符号)格式.

猜你在找的C&C++相关文章