首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++里无限大宏INT_MAX > INT_MAX +1 !

2012-10-09 
C++里无穷大宏INT_MAX INT_MAX +1 !!!晚上在做最短路径的算法,调试了好久,结果出的乱七八糟后来我单步调

C++里无穷大宏INT_MAX > INT_MAX +1 !!!
晚上在做最短路径的算法,调试了好久,结果出的乱七八糟

后来我单步调试,怀疑 if(INT_MAX > INT_MAX+1) 成立

后来专门做了测试,代码入下:

  int a=INT_MAX,b=INT_MAX;
if( a > b )
cout<<"a>b";
if( a > (b+1) )
cout<<"... ...";

无语啊,结果输出: 。。。 。。。请按任意键继续。。

帮忙看看啊,有什么办法解决吗???

[解决办法]
INT_MAX+1后转为int会成负值 所以a>b+1成立而a>b却不成立
[解决办法]
a == b 啊

[解决办法]
越界了
[解决办法]
INT_MAX的值是 0x7ffff...
加1之后就溢出,变成 0x800000 这是个负数

[解决办法]
dijkstra的infinity设为0x3fffffff级别的数
[解决办法]
很正常啊,加1后就越界了
[解决办法]

探讨

INT_MAX的值是 0x7ffff...
加1之后就溢出,变成 0x800000 这是个负数

[解决办法]
去研究一下int型的存储方式和INT_MAX的定义就清楚了
[解决办法]
没出溢出,INT_MAX + 1变成负数了。

热点排行