#include <iostream>
#include <string>
using namespace std;
int main()
{
int i = 0;
while ( i < 11)
cout << i << '\n';
i++;
}
このコードが毎回 i に 1 を追加するのではなく、繰り返し 0 を出力するのはなぜですか?
#include <iostream>
#include <string>
using namespace std;
int main()
{
int i = 0;
while ( i < 11)
cout << i << '\n';
i++;
}
このコードが毎回 i に 1 を追加するのではなく、繰り返し 0 を出力するのはなぜですか?
ステートメントを中括弧で囲みます{
。それ以外の場合は、サイクル内で出力ステートメントのみを実行し、のインクリメントはi
サイクル外で発生します。
あなたは書く必要があります:
#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
(宣言、定義、終了条件、インクリメント) もすべて同じ行にあります。読みやすさを助けます。
while ループには中括弧がありません。
コードを次のように扱っています。
while ( i < 11)
cout << i << '\n';
i++;
そしてあなたは本当に欲しい:
while ( i < 11)
{
cout << i << '\n';
i++;
}
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++;
}
ループの本体は、単一のステートメントにすることができます。
while ( i < 11)
cout << i << '\n';
または複合ステートメント。つまり、中かっこで囲まれたステートメントのグループです。
while ( i < 11) {
cout << i << '\n';
i++;
}
2 番目のフォームが必要なときに、最初のフォームを作成しました。他のいくつかの言語とは異なり、インデントは C++ では意味がなく、ステートメントは で囲まれた場合にのみブロックにグループ化されます{}
。
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++;
}
}
while ( i < 11)
{
cout << i << '\n';
i++;
}