隐式转换中的溢出问题?

时间:2018-09-12 01:09:18

标签: c

在我的机器中,整数数据类型的大小为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)”

1 个答案:

答案 0 :(得分:1)

您要的警告由-pedantic在GCC中启用。在“代码块”中,转到“设置”,“编译器”,然后找到“启用严格ISO C要求的警告”。打开它。