回 帖 发 新 帖 刷新版面

主题:请教高手指导这个程序中的问题

#include <iostream>
int main()
{
    int bitsum = 0;
    int adder = 1;
    for (int i = 1 ; i <= 7 ; ++i)
    {
        adder = adder * 2;
        bitsum += adder;
    }
    bitsum = bitsum +1;
    std::cout << bitsum;
    return 0;
}
当我把 i 的最大值“7”改为“31”时 结果为“-1”
                          “30”时 结果还是正常的
而当我把bitsum的内置类型改为"long"时,出现和上面一样的情况
                            
我是初学者,请高手们给我解解惑吧!说详细一点哦
谢谢

回复列表 (共6个回复)

沙发


你的数据太大溢出了,把int改成long long int就是了。。。如果有再大的数的话楼主最好用数组做

板凳


溢出了吧

3 楼

可以肯定是溢出了。int是32位,只能表示最大整数是2147483647,再加一的话会变成-2147483648,再加一会变成-2147483647,依次下去是-2147483646,-2147483645...直到-1,0,1,2...又开始循环,出现数的回环现象。

4 楼

3楼正解。

5 楼


阶乘,溢出了...[em2]

6 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册