C语言中通过INT_MAX判断两个非负整数相加是否溢出

简介: C语言中通过INT_MAX判断两个非负整数相加是否溢出

整数溢出是指当一个整数的值超过了它所能表示的范围时,会发生错误的结果。

例如,如果我们使用32位的有符号整数,那么它的最大值是2147483647,也就是INT_MAX。

如果我们试图将INT_MAX和任何正整数相加,那么结果就会溢出,变成一个负数或者零。

为了避免这种情况,我们可以在进行加法运算之前,先检查两个加数是否会超过INT_MAX。

具体的方法是,如果a和b是两个非负整数,那么我们可以判断b是否大于INT_MAX - a。

如果是,那么a + b一定会溢出;如果不是,那么a + b一定不会溢出。

示例代码:

#include <stdio.h>
#include <limits.h>
int main()
{
    int a = 1000000000; // 一个非负整数
    int b = 2000000000; // 另一个非负整数
    if (b > INT_MAX - a) // 判断是否会溢出
    {
        printf("a + b will overflow\n"); // 输出提示信息
    }
    else
    {
        printf("a + b will not overflow\n"); // 输出提示信息
        printf("a + b = %d\n", a + b); // 输出正确的结果
    }
    return 0;
}
目录
相关文章
|
1月前
|
编译器 C语言
C语言中整数如何自动转换为浮点数
C语言中整数如何自动转换为浮点数
74 0
|
1月前
|
存储 C语言
C语言中如何选择合适的方式将整数转换为浮点数
C语言中如何选择合适的方式将整数转换为浮点数
122 0
|
3月前
|
C语言
C语言写整数类(Integer)
C语言写整数类(Integer)
24 0
|
1月前
|
C语言
C语言刷题:整数加逗号、删除公共字符、求最小公倍数和将字符串倒置
C语言刷题:整数加逗号、删除公共字符、求最小公倍数和将字符串倒置
29 0
|
1月前
|
存储 编译器 C语言
c语言中int的作用和类型
c语言中int的作用和类型
28 0
|
1月前
|
存储 C语言
在C语言中编写,用于从键盘接收输入的整数并判断该数是否能被3整除
在C语言中编写,用于从键盘接收输入的整数并判断该数是否能被3整除
23 0
|
1月前
|
安全 NoSQL 小程序
嵌入式C语言中整形溢出问题分析
嵌入式C语言中整形溢出问题分析
27 0
|
2月前
|
算法 搜索推荐 程序员
C语言第二十六练 实现罗马数字转整数
C语言第二十六练 实现罗马数字转整数
30 0
|
2月前
|
算法 搜索推荐 程序员
C语言十八练——整数按位取反
C语言十八练——整数按位取反
28 0
|
3月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
25 0