class Solution {
public:
int reverse(int x) {
int sum = 0; //sum是用来存储反转后的数
while(x!=0) //每次都判断最后个位数,然后将个位数加在sum里
{
int pop = x%10; //获得个位数
// 比如最大范围是2的-10到2的10次方-1
//如果sum现在等于的是103 >1023/10 那么无论最后一个个位数是什么值,103x一定大于1023
if(sum> INT_MAX/10 || sum<INT_MIN/10 ) return 0; //如果说sum反转后的数字大于最大数取余10或者小于最小数取余10,则一定溢出
if((sum == INT_MAX && pop>INT_MAX%10) || (sum == INT_MIN && pop< INT_MIN%10)) return 0; //如果除掉最后一位其余相等的话,那么判断最后一位是否大于INT_MAX的最后一位或者小于INT_MIN的最后一位
sum = sum*10+pop;
x/=10;
}
return sum;
}
};