Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.2k views
in Technique[技术] by (71.8m points)

(编程小白)问如何判断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是否溢出,这个有点不理解?有没有大神可以帮忙解释一下?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
long lRet = 0;
if((int)lRet != lRet)

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...