C语言数据溢出的处理
数据溢出判断与处理的方法
问题描述
在诸如LeetCode这些刷题网站中刷题时,题目中常常会出现一个对数据范围的限制要求,比如限制数据范围在(-2^31 ~ 2^31-1)这种,下面的代码是本人处理这种情况的一般方法,如果感觉方法不错,就留下你的赞吧!
解答方案
//数据溢出判断与处理样例
#include"stdio.h"
#include"math.h"
#include"stdlib.h"
void main()
{
unsigned int a;
int flag_limit=0,flag_c=0;
scanf("%u",&a);
if(a<0)
{
flag_c=1;
a=abs(a);
a=(unsigned)a;
}
else
{
if(flag_c==0)
{
if(a>pow(2,31)-1)
{
printf("上限溢出 自动化为:2147483647\n");
exit(1);
}
}
else
{
if(a>pow(2,31))
{
printf("下限溢出 自动化为:-2147483648\n");
exit(1);
}
}
}
printf("%u\n",a);
}
代码部分较为简单,因此不做过多解释,如有疑问欢迎评论区留言~