注册 登录
编程论坛 C++教室

如何判断两个整型数相乘是否发生溢出

紫凤双飞 发布于 2011-04-05 21:36, 3806 次点击
如何判断两个整型数相乘是否发生溢出
求一个判断方法
3 回复
#2
pangding2011-04-05 23:01
一种简单的思路是像这样:

程序代码:
#include <limits.h>

if (INT_MAX / a < b)
{
    overflow;
}
else
{
    c = a*b;
}

当然有的时候你得看看 a, b 的正负问题。另一个有用的宏是 INT_MIN


[ 本帖最后由 pangding 于 2011-4-5 23:03 编辑 ]
#3
rjsp2011-04-06 08:11
或者
c = a*b;
if( a!=0 && c/a!=b ) overflow
#4
紫凤双飞2011-04-08 21:25
回复 3楼 rjsp
除非c与a,b的类型不同,否则若a*b溢出,则c!=a*b,下面的if判断也就不对啦
1