class Solution {
public:
int reverse(int x) {
long long ret=0;
long long cmp1=((long long)1<<31)-1;
long long cmp2=-cmp1-1;
while(x!=0)
{
ret=ret*10+x%10;
if((ret>cmp1)||(ret<cmp2))
return 0;
x/=10;
}
return ret;
}
};
注意不能直接写1<<32,因为默认1是int的,然后-优先级高于<<,用括号吧
用long long cmp1=((long long)1<<31)-1;
这题感觉描述的有问题,我还以为是输入范围也在-2^32 - 2^32-1,结果错了一次....
#include<limits.h>
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)
32位情况,C中int类型是32位的,范围是-2147483648到2147483647 。