这道题也是由于最后几个例子全是大整数导致的恶心问题,判断整数是否溢出,根据计算机体系结构可知判断符号位是否变化从而判定是否溢出。
int reverse(int x) {
int* integer = (int*)malloc(sizeof(int));
int temp = x,i = 0,length = 0,reverse = 0;
while(temp){
integer[i++] = temp%10;
temp = temp/10;
if(temp)
realloc(integer,sizeof(int)*(i+1));
}
length = i;
if(length == 10&&integer[0]>2)
return 0;
i = 0;
while(i<length){
reverse *= 10;
reverse += integer[i];
i++;
}
if((reverse>0&&x<0)||(x>0&&reverse<0)){
return 0;
}else{
return reverse;
}
}
2016/7/18