c - 隐式转换中的溢出问题?

标签 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)”

最佳答案

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

关于c - 隐式转换中的溢出问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286086/

相关文章:

c - 奇怪的变量类型声明

c - 从动态规划函数中获取值

c - 如何使结果显示在 C 中的新行中

c - 在C中实现strcmp函数

c++ - 在没有 stdio 的情况下将数字转换为字符串 C

python - 如何在不安装本地 Python 的情况下创建嵌入和运行 Python 代码的应用程序?

c - 从数组插入链表节点,但并非所有节点都被插入

c - 无法在 Glade GTK+3 中连接信号和信号处理程序

java - 您可以使用 JNI 在从 Java 调用的 C++ 函数中创建新的 JVM 吗?

使用 scanf 检查输入是否为 double?