|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如下:
说明
输入两个int范围内的整数a和b,你需要判断如果a和b都是用int类型存储的,a+b在C++中是否越界了(也就是结果是否还在int范围内)。
注意越界有上界和下界。
输入格式
一行两个整数a和b,int范围内
输出格式
如果越界了,输出Yes
否则输出No
样例
输入数据 1
输出数据 1
我的代码如下:
- #include <bits/stdc++.h>
- using namespace std;
- const int up=pow(2,31)-1,down=0-pow(2,31);
- int main(){
- int a,b;
- cin >>a>>b;
- long long add=a+b;
- if(add>up||add<down) cout<<"Yes";
- else cout<<"No";
- }
复制代码
请问我的代码错在哪里?
你的代码思路是正确的,但是有一个小问题。你使用了long long类型来存储a+b的值,但是在进行加法操作的时候,a和b已经被转换成了int类型,所以加法的结果也是int类型。因此,你需要在加法操作之前将a和b强制转换成long long类型,如下所示:
- long long add = (long long)a + (long long)b;
复制代码
这样就可以避免a+b的结果溢出int范围的问题了。
|
|