神秘的for循环错误

Mystifying For-Loop Error

本文关键字:循环 错误 for      更新时间:2023-10-16

我使用的是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(和更小的数字)没有。如果有人以前遇到过类似的情况,我很想听听他/她是如何解决的。

也许屏幕只是滚动?

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

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

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编译成:/)