超过有符号整数位数返回0怎么表示

img

例如这个

我有点读不懂题目的意思
我有点读不懂题目的意思
我有点读不懂题目的意思

32为有符号整数的范围为 2147483648~2147483647, 该题目的意思为,如果整数反转后超出这个范围,就输出0.


比如整数 12147483647 此时刚好等于 int(有符号整数)的上界,如果反转之后该数为 7463....... ,显然该数大于了int的上界,此时输出 0 即可。


这里提供两种常规思路:
思路一:用一种更大范围的数据类型去计算,然后判断是否溢出。如果溢出则返回 0.
思路二:提前判断一下该整数反转后是否会溢出,如果会则输出0.

因为2^31==2147483648
所以有符号32位整数的范围是
-2147483648到2147483648
比如1234567811数字部分倒过来就是1187654321,在以上范围内,最终返回1187654321
-1234567811数字部分倒过来就是-1187654321,在以上范围内,最终返回-1187654321
但是1234567812数字部分倒过来是2187654321,不在以上范围内,最终返回0
以此类推。