1
#include <iostream>
#include <string>

using namespace std;

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

このコードが毎回 i に 1 を追加するのではなく、繰り返し 0 を出力するのはなぜですか?

4

7 に答える 7

6

ステートメントを中括弧で囲みます{。それ以外の場合は、サイクル内で出力ステートメントのみを実行し、のインクリメントはiサイクル外で発生します。

于 2013-06-19T15:09:17.987 に答える
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ループの範囲外にアクセスできないように、ループ スコープにどのように持ち込んだかに注意してください。プログラムの安定性に役立ちます。すべてのものhappen(宣言、定義、終了条件、インクリメント) もすべて同じ行にあります。読みやすさを助けます。

于 2013-06-19T15:10:28.260 に答える
4

while ループには中括弧がありません。

コードを次のように扱っています。

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

そしてあなたは本当に欲しい:

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

C++ では、1 つのステートメントを中かっこで囲むかどうかを選択できます。

ただし、ループ本体に複数のステートメントがある場合は、中かっこを使用する必要があります。

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 に答える
1

ループの本体は、単一のステートメントにすることができます。

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

または複合ステートメント。つまり、中かっこで囲まれたステートメントのグループです。

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

2 番目のフォームが必要なときに、最初のフォームを作成しました。他のいくつかの言語とは異なり、インデントは C++ では意味がなく、ステートメントは で囲まれた場合にのみブロックにグループ化されます{}

于 2013-06-19T15:12:16.143 に答える
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 に答える
0
 while ( i < 11)
    {
       cout << i << '\n';
       i++;
    }
于 2013-06-19T15:14:19.300 に答える