int类型存储最大数是32767,如果再加1会有什么变化?该如何解决
int类型存储最大数是32767,如果再加1会有什么变化?
如图,有书解释int类型存储最大32767,+1会溢出,实际操作结果:
运行结果:
32767 32768
Press any key to continue
------解决方案--------------------
32767+1 = 0x7FFF+1 = 0x8000 = 1000 0000 0000 0000
1000 0000 0000 0000为有符号数,是一个付数,取反+1 = -(111 1111 1111 1111 +1)
= -(1000 0000 0000 0000)
= -32768
------解决方案--------------------
------解决方案--------------------
书里的int是16位 你这里的int可能是32位的
------解决方案--------------------
你的书可以扔掉了,现在的64位win7都跑不了16位程序了,教材竟然还是16位的
------解决方案--------------------
扔了算了
------解决方案--------------------
又吞楼 现在一般的int都是32位咯
------解决方案--------------------
int a =0x7FFFFFFF+1
如图,有书解释int类型存储最大32767,+1会溢出,实际操作结果:
- C/C++ code
# include <stdio.h> int main(void) { int a,b; a=32767; b=a+1; printf("%d %d\n",a,b); return 0; }
运行结果:
32767 32768
Press any key to continue
------解决方案--------------------
32767+1 = 0x7FFF+1 = 0x8000 = 1000 0000 0000 0000
1000 0000 0000 0000为有符号数,是一个付数,取反+1 = -(111 1111 1111 1111 +1)
= -(1000 0000 0000 0000)
= -32768
------解决方案--------------------
------解决方案--------------------
书里的int是16位 你这里的int可能是32位的
------解决方案--------------------
你的书可以扔掉了,现在的64位win7都跑不了16位程序了,教材竟然还是16位的
------解决方案--------------------
扔了算了
------解决方案--------------------
又吞楼 现在一般的int都是32位咯
------解决方案--------------------
int a =0x7FFFFFFF+1