我的代码中有这个,它导致以下警告:
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