Paw*_*ica 2 c++ integer-overflow undefined-behavior
在C++中,签名类型的溢出是未定义的行为.以下示例是否也是未定义的行为?
#include <limits.h>
int f() {
int a = INT_MAX;
int b = -1;
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
它不是数学上下文中的溢出,但CPU可能会看到它
add 0x7fffffff 0xffffffff.
pay*_*yne 10
你给出的例子不是溢出.
来自维基百科(https://en.wikipedia.org/wiki/Integer_overflow):
...当算术运算尝试创建一个超出可以用给定位数表示的范围的数值时发生整数溢出- 大于最大值或小于最小可表示值.
INT_MAX +( - 1)不在int类型可表示的范围之外,并且定义了结果.
| 归档时间: |
|
| 查看次数: |
431 次 |
| 最近记录: |