我的代码中有这个,它导致以下警告:
long ans = ((long) INT_MIN) * 2 - 1;
我得到的警告是:
warning: integer overflow detected: op "*"
我已经包含了 limits.h 以便我可以使用 INT_MIN
#include <limits.h>
我的代码中有这个,它导致以下警告:
long ans = ((long) INT_MIN) * 2 - 1;
我得到的警告是:
warning: integer overflow detected: op "*"
我已经包含了 limits.h 以便我可以使用 INT_MIN
#include <limits.h>
这意味着计算将超出 的范围long
。有符号溢出会产生未定义的行为。
long
可表示的值范围与值之间的唯一相关性INT_MIN
是INT_MIN
可表示为 a long
。不能保证小于两倍INT_MIN
的一个可以表示为long
.
在 Windows x86 上,使用 Visual C++ 编译器,long
是 4-bytes,与int
. 尝试long long