题目如图:看到一题的解法如下:
#define isOverLength 0 int reverse(int x){ long lRet = 0; while(0 != x) { lRet = lRet * 10 + x % 10; x = x / 10; } if((int)lRet != lRet) { return isOverLength; } return (int)lRet; }
其中,这一段:if((int)lRet != lRet)具体是什么意思呢?为什么加上这一段就可以判断int是否溢出,这个有点不理解?有没有大神可以帮忙解释一下?
if((int)lRet != lRet)
long lRet = 0; if((int)lRet != lRet)
这两句结合起来看,声明了一个 long 类型的数据,然后转换为int类型,看看两个值是否一致。
举个例子,我有满满一桶水,我想知道他是否能放入另一个小桶中。那么我们就把他放入小桶,再放回大桶,看看是否一样多。少了的话就是溢出丢了呗。
2.1m questions
2.1m answers
60 comments
57.0k users