PTA 乙级——1011 A+B 和 C C++实现

给定区间 [−2​31​​,2​31​​] 内的 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 <iostream>
using namespace std;
int main()
{
    int T;    
    cin >> T;    
    for (int i = 0; i < T; i++)    
    {
            long int A, B, C;      
            cin >> A >> B >> C;        
            if (A + B>C)  cout << "Case #" << i + 1 << ": true" << endl;        
            else  cout << "Case #" << i + 1 << ": false" << endl;
    }
}

出现了一个玄学的事情,在visual studio上用int跑的好好的但是到了平台测试上就不行了。

虽然知道是表示范围的问题,查了半天发现标准定义下C++中int占四个字节,long int占八个字节。

也就是说加上符号位int表示的范围是-2^31 ~ 2^31-1,算出来也就是[-2147483648 ,2147483647]。

然鹅在大部分编译器里直接给了int八个字节的位置,和long int基本上已经没有区别,包括VS,不过平台上的int应该还是8个字节。

顺便整理一波几个常用的数据类型标准长度

数据类型存储长度
char1个字节 (-128到127)
short int2个字节 (-32768到32767)
int4个字节 (-2147483648 到 2147483647)
long int8个字节
float4个字节
double8个字节
long t=double16个字节

默认为有符号数,无符号数从0开始。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值