#include <iostream>
#include <string.h>
using namespace std;
int testMul(int a, int b)
{
return !a || a * b / a == b;
}
int main()
{
int a, b;
while(cin >> a >> b) cout << testMul(a, b) << endl;
return 0;
}
当输入
时-1 -2147483648
,存在运行时错误。除以0? 我觉得这很棒。
顺便说一下,有没有人总结出一种可以判断乘法是否有溢出的方法?
答案 0 :(得分:1)
当你将-1
和-2147483648
相乘时,你会得到有符号的溢出,这是C ++中未定义的行为,结果可能是任何,直到你的计算机着火。因此,将零除以实际上并不是结果的坏处。