C++中出现奇怪的运行时错误

A strange runtime error in C++

本文关键字:运行时错误 C++      更新时间:2023-10-16
#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?我认为这很神奇。

顺便问一下,有没有人得出一种可以判断乘法是否有溢出的方法?

当你乘以

-1-2147483648你得到签名溢出时,这是C++中未定义的行为,结果可能是任何,直到您的计算机着火。因此,除以零实际上并不是那么糟糕的结果。