39774

[code]

    n=1;
    while(n<=5)
    cout<< n << '';
    n++;
    
[/code]

上記コードですが、  
`1 2 3 4 5`と表示されると思いきや、なぜか`1 1 1 1 1 1 ・・・`と表示されてしまいます。  
理由をご教示頂けますと幸いです。


CC BY-SA 3.0
2017-11-23T00:51:10.990
39772
2017-11-23T01:23:43.490
2017-11-23T01:03:17.937
19110
26303
question
c++
c++のwhile文が無限ループしてしまう


ループする範囲を中括弧で囲んでください。

元々のコードは以下の形をしています。

[code]

    while (n <= 5)
    cout << n << ' ';
    n++;
    
[/code]

このコードでは、while 文によってループするのは `cout << n << ' ';`
の行のみです。ループする範囲を中括弧で指定しない場合、while 文のすぐ次の部分 **のみ**
がループすることになります。分かりやすくインデントを付けて書くと、以下のようなネスト構造になっています。

[code]

    while (n <= 5)
        cout << n << ' ';  /* この行のみが while ループの範囲内 */
    n++;                   /* この行は while ループの外 */
    
[/code]

次のように中括弧で囲むように書くと、`cout << n << ' ';` と `n++;`
の2行が共にループするようになります。構造の分かりやすさのためにインデントも付けています。

[code]

    while (n <= 5) {
        cout << n << ' ';
        n++;
    }
    
[/code]


CC BY-SA 3.0
2017-11-23T01:02:52.577
39774
2017-11-23T01:23:43.490
2017-11-23T01:23:43.490
19110
19110
39772
answer