C++ long long int overflow/underflow

C++ long long int overflow/underflow

我正在制作一个解决基本数学运算的小程序(*/+-)并且我正在使用 long long int(64 位数字)所以我可以用大数字进行数学运算。

但是有个问题。我可以检查操作数是否超过或低于限制(使用 LONG_LONG_MAXLONG_LONG_MIN)。 但是,当我(例如)将两个非常大的数字相乘(这会导致 long long int 溢出)时,LONG_LONG_MAX 检查不起作用。相反,结果是 -4.

C/C++ 有机会检查吗?例如一些 try catch 构造?

为了 x = a*b;

if (a != 0 && x / a != b) {
// overflow handling
}

参考这个post了解更多详情

multiplication of large numbers, how to catch overflow