1

我的代码中有这个,它导致以下警告:

long ans = ((long) INT_MIN) * 2 - 1;  

我得到的警告是:

warning: integer overflow detected: op "*"

我已经包含了 limits.h 以便我可以使用 INT_MIN

#include <limits.h>
4

2 回答 2

4

这意味着计算将超出 的范围long。有符号溢出会产生未定义的行为。

long可表示的值范围与值之间的唯一相关性INT_MININT_MIN可表示为 a long。不能保证小于两倍INT_MIN的一个可以表示为long.

于 2011-01-30T00:27:27.583 回答
0

在 Windows x86 上,使用 Visual C++ 编译器,long是 4-bytes,与int. 尝试long long

于 2011-01-30T00:30:57.690 回答