1011 A+B 和 C (15 分)

给定区间 [231​​,231​​] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。

输入格式:

输入第 1 行给出正整数 T (10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。

输出格式:

对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。

输入样例:

4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647

输出样例:

Case #1: false
Case #2: true
Case #3: true
Case #4: false

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int T;
    cin>>T;
    long long a,b,c;
    for(int i=1;i<=T;i++)
    {
        cin>>a>>b>>c;

        if(a+b>c)
            cout<<"Case #"<<i<<": true"<<endl;
            else
            cout<<"Case #"<<i<<": false"<<endl;
    }
    return 0;
}

 

 

 

这一道题目涉及整数溢出的问题,在这里简单总结一下

早期的操作系统是16位系统,

int用二字节表示,范围是[-215-1,215]

long用四字节表示,范围是[-231-1,231]

后来发展到32位操作系统

int用4字节表示,与long相同。

目前的操作系统已经发展到64位操作系统,但因为程序编译工具不同,两者表现出不同的差别:

32位编译系统:int占四字节,与long相同。

64位编译系统:int占四字节,long占8字节。

在标准中,并没有规定long一定要比int长,也没有规定short比int短。

标准是这么说的:长整型至少和整型一样长,整型至少和短整型一样长。

 

posted @ 2018-12-25 12:05  focusDing  阅读(267)  评论(0编辑  收藏  举报