首页 > 代码库 > Reverse Integer
Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
#include<stdio.h> int reverse(int x) { long long tmp1=(long long)x; long long tmp2=(long long)x; long long i,sum=0,a,b,n=0; if(tmp1<0) tmp1=tmp2=-tmp1; if(x>2147483648||x<-2147483647) {return 0;} while(tmp1>0) { tmp1=tmp1/10; n++; } while(n>0) { a=tmp2%10; for(i=1,b=a;i<n;i++) { b=b*10; if(b>2147483648) {return 0;} } sum=sum+b; tmp2=tmp2/10; n--; } if(sum>2147483648||sum<-2147483647) {return 0;} if(x<0) sum=0-sum; return (int)sum; } void main() { int a=1534236469; printf("%lld\n",a); a=reverse(a); printf("%d\n",a); }
关于这一题虽然通过了,但是有个疑问,边界如果不是1534236469而是稍大一点的值,比如3999999992,就会得到一个负数,因为int型的这个大数直接和32位int所能表示的最大边界2147483648比较不会得到比她大的结果,比较时x会自动转化成一个负数,比如-789998,用long long类型的变量给x复制,再打印出这个long long类型的值,结果也是这个负数,而不是3999999992,将x强制类型转化也是一样,而用%lld类型打印x则会得到其真实值3999999992,不明其因……
Reverse Integer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。