1
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int i = 0;
    while ( i < 11)
        cout << i << '\n';
        i++;
}

为什么这段代码重复输出 0 而不是每次都给 i 加 1?

4

7 回答 7

6

把你的陈述放在花括号里{。否则,您只在循环中执行输出语句,并且增量i将发生在循环之外。

于 2013-06-19T15:09:17.987 回答
4

您的 while 循环没有大括号。

它将您的代码视为:

    while ( i < 11)
        cout << i << '\n';
    i++;

你真的想要:

    while ( i < 11)
    {
       cout << i << '\n';
       i++;
    }
于 2013-06-19T15:09:37.660 回答
4

你需要写:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int i = 0;
    while ( i < 11){
        cout << i << '\n';
        i++;
    }

}

注意后面的额外支撑( i < 11)

出于兴趣,在风格上最好在for此处使用循环:

int main()
    {
        for (int i = 0; i < 11; ++i){
            cout << i << '\n';                
        }

    }

请注意我是如何i进入循环范围的,因此无法在循环之外访问它;帮助程序稳定。对 i的所有东西happen(声明、定义、终止条件和增量)也都在同一行;帮助可读性。

于 2013-06-19T15:10:28.260 回答
1

循环体可以是单个语句:

while ( i < 11)
    cout << i << '\n';

或复合语句;也就是用大括号括起来的一组语句:

while ( i < 11) {
    cout << i << '\n';
    i++;
}

当您需要第二个表格时,您已经编写了第一个表格。与其他一些语言不同,缩进在 C++ 中没有任何意义,只有用 . 包围的语句才会被分组到块中{}

于 2013-06-19T15:12:16.143 回答
1

在 C++ 中,您可以选择是否将单个语句放入大括号中。

但是,如果循环体中有多个语句,则必须使用大括号:

while ( i < 11) {
    cout << i << '\n';
    i++;
}

C++ 不像 python 那样对空间敏感,所以下面的方法也可以:

while ( i < 11) {cout << i << '\n';i++;}

while ( i < 11)
{
    cout << i << '\n';
    i++;
}

while ( i < 11)



{
    cout << i << '\n';
    i++;
}
于 2013-06-19T15:11:34.593 回答
0
 while ( i < 11)
    {
       cout << i << '\n';
       i++;
    }
于 2013-06-19T15:14:19.300 回答
0

C++ 中的循环仅循环紧随其后的语句,除非它们已被放入代码块中。也就是说,您的代码相当于:

int main()
{
    int i = 0;
    while ( i < 11)
    {
        cout << i << '\n';
    }
    i++;
}

这改为:

int main()
{
    int i = 0;
    while ( i < 11)
    {
        cout << i << '\n';
        i++;
    }
}
于 2013-06-19T15:10:31.583 回答