主要考察数据相加会溢出的问题。
溢出只有两种情况
1、正+正 溢出为 负 肯定比c大
2、负+负 溢出为 正 肯定比c小
考虑好这两个就问题了。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <climits>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
int n;
long long a,b,c;
int main(){
scanf("%d",&n);
for(int i =1 ;i <= n ;i++){
scanf("%lld%lld%lld",&a,&b,&c);
long long t = a + b;
if( a > 0 && b > 0){
if(t <= 0)//溢出
cout << "Case #" << i << ": true" << endl;
else{
if(t > c)
cout << "Case #" << i << ": true" << endl;
else
cout << "Case #" << i << ": false" << endl;
}
}
else if(a < 0 && b < 0){
if(t >= 0)//溢出
cout << "Case #" << i << ": false" << endl;
else{
if(t > c)
cout << "Case #" << i << ": true" << endl;
else
cout << "Case #" << i << ": false" << endl;
}
}
else{
if(t > c)
cout << "Case #" << i << ": true" << endl;
else
cout << "Case #" << i << ": false" << endl;
}
}
return 0;
}
本文介绍了一种检测整数溢出的算法实现,通过分析正数与正数相加及负数与负数相加可能导致的溢出情况,确保程序在进行数值运算时能够正确判断是否发生溢出现象。
359

被折叠的 条评论
为什么被折叠?



