我使用的是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编译成:/)