https://leetcode-cn.com/problems/reverse-integer/
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
题目并不难,重点在于处理溢出问题。
INT_MAX 2147483647
INT_MIN -2147483648
#define INT_MAX 2147483647 //确定范围
#define INT_MIN -2147483648
int reverse(int x) {
int temp;
int reserve=0;
while(x != 0){ //因为不知正负,所以以等于0为边界条件
temp = x%10; //取余,C语言余数符号由被除数确定
if(reserve>INT_MAX/10 || (reverse == (INT_MAX/10) && temp> 7) ) return 0;
if(reserve<INT_MIN/10 ||(reserve == (INT_MIN/10) && temp <-8) ) return 0;
//判断溢出条件
reserve = reserve*10+temp;
x/=10;
}
return reserve;
}