美文网首页c/c++
875.C语言中通过INT_MAX判断两个非负整数相加是否溢出

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

作者: 七镜 | 来源:发表于2023-12-06 23:27 被阅读0次

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

例如,如果我们使用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;
}

相关文章

  • 判断整型运算是否溢出

    加法溢出: 无符号整数溢出判断较简单 有符号整数溢出的时候只存在正溢出和负溢出两种情况,即两正数相加得到一个负数或...

  • 633. 平方数之和 Sum of Square Numbers

    【题目描述】给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c。 【示...

  • 2021-12-05 633. 平方数之和【Medium】

    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c 。 示例 1: 示...

  • 633. 平方数之和

    1.题目 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c 。 示...

  • leetcode集锦

    1.leetcode--双指针法:判断一个非负整数是否是两个数平方之和function judgeSquareSu...

  • 633. 平方数之和

    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c。 示例1: 示例2...

  • 平方数之和

    题目: 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。 示例: 输入...

  • leetcode 633. 平方数之和

    题目: 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。 示例 1:...

  • Leetcode(2) -两数相加 - java版

    Leetcode(2) -两数相加 - java版 题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们...

  • Leetcode 精选之双指针(平方数之和)

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。 示例1: ...

网友评论

    本文标题:875.C语言中通过INT_MAX判断两个非负整数相加是否溢出

    本文链接:https://www.haomeiwen.com/subject/omqsgdtx.html