在我的机器中,整数数据类型的大小为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)”
答案 0 :(得分:1)
您要的警告由-pedantic
在GCC中启用。在“代码块”中,转到“设置”,“编译器”,然后找到“启用严格ISO C要求的警告”。打开它。