C++ long long int overflow/underflow
C++ long long int overflow/underflow
我正在制作一个解决基本数学运算的小程序(*
、/
、+
、-
)并且我正在使用 long long int
(64 位数字)所以我可以用大数字进行数学运算。
但是有个问题。我可以检查操作数是否超过或低于限制(使用 LONG_LONG_MAX
和 LONG_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
我正在制作一个解决基本数学运算的小程序(*
、/
、+
、-
)并且我正在使用 long long int
(64 位数字)所以我可以用大数字进行数学运算。
但是有个问题。我可以检查操作数是否超过或低于限制(使用 LONG_LONG_MAX
和 LONG_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