C++检测加法溢出的小方法

说明:

     在我们做计算的时候,我们可能会遇到溢出的情况,虽然大多时候都不予理会或者去调试自己的代码符合某种要求。但有些情况需要我们自己去检测,这里就给出一个很简单的检测溢出的代码,以C++实现,当然,检测的是整型数据(也可以是其它类型的数据)。

 

代码如下: 

#include<iostream>
using namespace std;

int tadd_ok(int x,int y) {//给出两个int型的数
	int sum = x + y;
	int neg_over = x<0&&y<0&&sum>=0;//这里和下一句都是逻辑:负数加负数结果为正数肯定溢出
	int pos_over = x>=0&&y>=0&&sum<0;//正数加正数结果为负数肯定溢出
	return !neg_over&&!pos_over;//存在上面两种情况之一的就溢出,那么返回0;不溢出那么返回1
}

 

小资料:

     C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]

     int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1]

注意:int占多少个字节是由编译器决定的,ANSI标准定义int是占2个字节.

 

检测:

int main() {
	cout<<tadd_ok(-0.21,-0.24)<<endl;
	cout<<tadd_ok(2147483647,3)<<endl;
	return 0;
}
//打印为:
1
0
证明后者溢出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

threecat.up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值