在 C++ 中检查整数溢出
唯一安全的方法是在溢出发生之前检查溢出。不过,有一些检查整数溢出的非常规方法。因此,如果你打算检测无符号 int 加法中的溢出,你可以检查结果是否实际上小于相加的两个值。例如,
例
unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should also work
这是因为如果 x 和 y 都是无符号 int,并且相加后它们溢出,那么它们的值不能大于其中的任何一个,因为它需要大于最大的可能无符号 int 才能在循环中叠加并超过这些值。
另一种方法是尝试访问 CPU 中的溢出标志。某些编译器提供了对它们的访问权限,你可以对其进行测试,但这并不是标准的。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言
C++
C#
MongoDB
MySQL
Javascript
PHP