在C++中,有符号类型的溢出是未定义的行为。以下示例也是未定义的行为吗?
#include <limits.h>
int f() {
int a = INT_MAX;
int b = -1;
return a + b;
}
在数学环境中这不是溢出,但是CPU可能会看到
add 0x7fffffff 0xffffffff
。 最佳答案
您提供的示例并非溢出。
从维基百科(https://en.wikipedia.org/wiki/Integer_overflow):
INT_MAX +(-1)不在int类型可表示的范围之内,并且定义了结果。