C++中的自动溢出检测?

Joh*_*ith 6 c++ overflow

可能重复:
在C/C++中检测整数溢出的最佳方法

通常,当我使用大数字在C++中编写某些内容时,我无法判断溢出何时发生,即使我使用的是长long或其他64位数据类型.有没有一种有效的方法来检测何时发生溢出而不是目击错误的值?

dir*_*tly 2

从标准 C++ 中您可能得不到太多东西:

\n
\n

5 表达式

\n

4如果在计算表达式期间,结果未\n以数学方式定义或不在其类型的可表示值的范围内,则行为未定义。[ 注意:大多数现有的 C++ 实现都会忽略整数溢出。除以零的处理,使用零除数形成余数,并且所有浮点异常因机器而异,通常可以通过库函数进行调整。\xe2\x80\x94结束注]

\n
\n

您最好的选择是使用在<cstdint>诸如uint32_t.

\n

还要查看<cerrno>标头中的错误代码,例如EOVERFLOW。然后是来自 的overflow_error/underflow_error<stdexcept>

\n