在我的机器中,整数数据类型的大小为 4 个字节,因此在有符号 int 的情况下,正数的最大值为 2147483647,负数的最大值为 -2147483648。考虑下面的 C 程序
#include<stdio.h>
int main(void)
{
int a = 2147483648;
int b = -2147483649;
printf("%d",a);
printf("\n%d",b);
return 0;
}
输出: -2147483647 2147483647
为什么 a 隐式转换为 -2147483648 而 b 隐式转换为 2147483647?以及为什么我只在第 2 行收到下面给出的警告
“隐式常量转换中的溢出(-woverflow)”
最佳答案
您想要的警告在 GCC 中由 -pedantic
启用。在“代码块”中,转到“设置”、“编译器”并找到“启用严格 ISO C 要求的警告”。打开它。
关于c - 隐式转换中的溢出问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286086/