社区
C++ 语言
帖子详情
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
打赏
收藏
C++里无穷大宏INT_MAX > INT_MAX +1 !!!
晚上在做最短路径的算法,调试了好久,结果出的乱七八糟 后来我单步调试,怀疑 if(INT_MAX > INT_MAX+1) 成立 后来专门做了测试,代码入下: int a=INT_MAX,b=INT_MAX; if( a > b ) cout<b"; if( a > (b+1) ) cout<<"... ..."; 无语啊,结果输出: 。。。 。。。请按任意键继续。。 帮忙看看啊,有什么办法解决吗???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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变成负数了。
珍惜生命远离CPP
2010-12-16
打赏
举报
回复
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却不成立
大
宏
立:2020年年度报告.PDF
大
宏
立:2020年年度报告.PDF
大
宏
立:首次公开发行股票并在创业板上市招股说明书.PDF
大
宏
立:首次公开发行股票并在创业板上市招股说明书.PDF
大
宏
科技智能仓储系统.pptx
基于RFID技术的仓库管理,将改变传统的仓库管理的工作方式与流程,把所有关键的因素通过贴上RFID标签,在仓库管理的核心业务流程:出库、入库、盘点、库存控制上实现更高效精确的管理。RFID技术以识别距离远,快速,...
大
宏
九鼎颂园项目定位推广提案DOC22(1).docx
大
宏
九鼎颂园项目定位推广提案DOC22(1).docx
大
宏
九鼎颂园项目定位推广提案doc22(1).doc
大
宏
九鼎颂园项目定位推广提案doc22(1).doc
C++ 语言
64,636
社区成员
250,963
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章