c - long and = ((long) INT MIN) * 2 - 1;由于整数溢出导致警告

标签 c integer-overflow

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

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 可表示为 long 。不能保证小于两倍的 INT_MIN 可以表示为 long

关于c - long and = ((long) INT MIN) * 2 - 1;由于整数溢出导致警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840365/

相关文章:

c - 为什么 pthreads 的条件变量函数需要互斥体?

c - 绑定(bind)失败 : Cannot assign requested address

c - 用 C 读取文本文件,在多个点处停止,将其分成多个部分

c# - 列表总和太大,抛出溢出异常

c - 整数溢出不一致

c++ - 如何检测无符号整数溢出?

python - 在带有 ctypes 的 cuda 分配内存上使用 python 句柄

c - 如何在C中的Excel工作表中创建另一行

numbers - Java 8 无符号整数加法和潜在溢出

python Timedelta溢出