(编程小白)问如何判断int是否溢出?

image.png
image.png
题目如图:
看到一题的解法如下:

#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是否溢出,这个有点不理解?有没有大神可以帮忙解释一下?

阅读 2.8k
1 个回答
long lRet = 0;
if((int)lRet != lRet)

这两句结合起来看,声明了一个 long 类型的数据,然后转换为int类型,看看两个值是否一致。

举个例子,我有满满一桶水,我想知道他是否能放入另一个小桶中。那么我们就把他放入小桶,再放回大桶,看看是否一样多。少了的话就是溢出丢了呗。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进