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短。
标准是这么说的:长整型至少和整型一样长,整型至少和短整型一样长。