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后就越界了
[解决办法]