我正在制作一个小程序来解决基本的数学运算(*
,/
,+
,-
)而我正在使用{{ 1}}(64位数字)所以我可以用大数字进行数学运算。
但是有一个问题。我可以检查操作数是否超过或超出限制(使用long long int
和LONG_LONG_MAX
)。
但是当我(例如)乘以两个非常大的数字(导致LONG_LONG_MIN
溢出)时,long long int
检查不起作用。相反,结果是-4。
C / C ++中是否有机会检查?例如,有些尝试捕获构造?
答案 0 :(得分:1)
有关 x = a * b;
if (a != 0 && x / a != b) {
// overflow handling
}
请参阅此帖子了解更多详情