C++ C++;长整型溢出/下溢

C++ C++;长整型溢出/下溢,c++,c,math,overflow,underflow,C++,C,Math,Overflow,Underflow,我正在制作一个小程序来解决基本的数学运算(*,/,+,-),我正在使用long-long-int(64位数字),这样我就可以对大数字进行数学运算 但有一个问题。我可以检查操作数是否超过或低于限制(使用LONG\u LONG\u MAX和LONG\u LONG\u MIN)。 但是,当我(例如)将两个非常大的数字相乘(这会导致long long int溢出)时,long\u long\u MAX检查不起作用。相反,结果是-4 在C/C++中是否有机会检查这一点?例如,一些try-catch构造?用

我正在制作一个小程序来解决基本的数学运算(
*
/
+
-
),我正在使用
long-long-int
(64位数字),这样我就可以对大数字进行数学运算

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

在C/C++中是否有机会检查这一点?例如,一些try-catch构造?

用于 x=a*b

if (a != 0 && x / a != b) {
// overflow handling
}
有关更多详细信息,请参阅本文


您可以通过检查(例如)
b>MAX/a
来了解这一点。是的,我想这样做,但我想知道是否有“更好”的方法。
long
至少是64位,但可能更多。如果您想要一个64位变量,请使用
int64\u t
。我看不出您的问题,您可以发布一个代码示例和与之不兼容的值吗?您可以始终使用一个大的int库,而不用担心它。