2

我正在使用 Ubuntu 10.10、Codeblocks IDE 和 gcc 编译器。我注意到我正在编写的程序正在创建一些奇怪的输出。最终,我将问题缩小到程序中的 for 循环。我惊讶地发现以下基本的 for 循环没有按预期执行。

#include <iostream>

using namespace std;

int main()
{


for(unsigned int i = 0; i < 21; i++)
    {
    cout << i << endl;
    }

return 0;

}

当我编译并运行它时,输出是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

尽管人们会期望输出应该包括零。非常令人惊讶的是,当我将 for 循环更改为

#include <iostream>

using namespace std;

int main()
{


for(unsigned int i = 0; i < 20; i++)
    {
    cout << i << endl;
    }

return 0;

}

我得到了预期的输出:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

我一生都无法弄清楚为什么 21(以及所有大于 21 的数字)给我这个错误的输出,而 20(和更低的数字)却没有。如果有人以前遇到过这样的事情,我肯定会很高兴听到他/她是如何解决这个问题的。

4

2 回答 2

2

也许屏幕只是滚动?

尝试将输出重定向到文本文件

于 2011-04-25T05:33:10.083 回答
1

这看起来很奇怪,以至于我运行了你的第一个程序并得到了我所期望的:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

但是,我注意到您使用 gcc 作为编译器。这个是针对c编程的。更好地使用 g++,就像我为此所做的那样。它在这里工作正常。(我真的很惊讶 gcc 编译那个:/)

于 2011-04-25T05:26:46.537 回答