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

gucheng789 2010-12-15 11:51:05
晚上在做最短路径的算法,调试了好久,结果出的乱七八糟

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

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

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

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

帮忙看看啊,有什么办法解决吗???
...全文
2581 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
liucheng8789 2011-12-05
  • 打赏
  • 举报
回复
D[v] - D[w] > G.arcs[w][v].adj
不就ok了吗
或者
D[v] > D[w]+G.arcs[w][v].adj
之前判断一下 D[w] 如果不是INT_MAX 再执行不就好了
bluejays 2010-12-16
  • 打赏
  • 举报
回复
a-1 > b
gucheng789 2010-12-16
  • 打赏
  • 举报
回复
哦··
晓得了

那哪位搞过 最短路径吗?
这个越界问题可以怎样解决啊??
D[v] > D[w]+G.arcs[w][v].adj
其中D[v],D[w]为INT_MAX····
bluejays 2010-12-16
  • 打赏
  • 举报
回复
INT_MAX的值是 0x7ffff...
加1之后就溢出,变成 0x800000 这是个负数
liuningtj 2010-12-16
  • 打赏
  • 举报
回复
去研究一下int型的存储方式和INT_MAX的定义就清楚了
luciferisnotsatan 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bluejays 的回复:]

INT_MAX的值是 0x7ffff...
加1之后就溢出,变成 0x800000 这是个负数
[/Quote]
+1
ouyh12345 2010-12-16
  • 打赏
  • 举报
回复
很正常啊,加1后就越界了
gucheng789 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 turntogo 的回复:]
中国有句古话说:物极必反!
[/Quote]

I love China too`````
FancyMouse 2010-12-16
  • 打赏
  • 举报
回复
dijkstra的infinity设为0x3fffffff级别的数
flyerwing 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 turntogo 的回复:]
中国有句古话说:物极必反!
[/Quote]
把标记位都用吧.
星光伴月 2010-12-16
  • 打赏
  • 举报
回复
中国有句古话说:物极必反!
zy020118 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gucheng789 的回复:]
哦··
晓得了

那哪位搞过 最短路径吗?
这个越界问题可以怎样解决啊??
D[v] > D[w]+G.arcs[w][v].adj
其中D[v],D[w]为INT_MAX····
[/Quote]
可以自己定义一个最大值,比如100000,那样相加就不会越界了
herman~~ 2010-12-16
  • 打赏
  • 举报
回复
了解int的最高位为符号位,溢出后自然变负数
Jesusgospelnj 2010-12-16
  • 打赏
  • 举报
回复
数据越界,变负的了
bluesky12312388 2010-12-16
  • 打赏
  • 举报
回复
没出溢出,INT_MAX + 1变成负数了。
  • 打赏
  • 举报
回复
INT_MAX 不是无穷大啊。
mymtom 2010-12-16
  • 打赏
  • 举报
回复
溢出了。
無_1024 2010-12-15
  • 打赏
  • 举报
回复
越界了
無_1024 2010-12-15
  • 打赏
  • 举报
回复
a == b 啊
sduxiaoxiang 2010-12-15
  • 打赏
  • 举报
回复
INT_MAX+1后转为int会成负值 所以a>b+1成立而a>b却不成立

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧