私はこのコードを持っています:
int i = 0, j = 0;
for(i=0,j=0;i<5,j<25;i++,j++);
cout<<i <<" "<<j;
そして、なぜそれが出力するのかわかりません25 25
。i
なぜ25の値を取得するのか本当にわかりませんj
。2番目の条件から25の値に達している理由を誰かに説明してもらえますか?これは、1つのforループで2つの条件をチェックする問題ですか?
私はこのコードを持っています:
int i = 0, j = 0;
for(i=0,j=0;i<5,j<25;i++,j++);
cout<<i <<" "<<j;
そして、なぜそれが出力するのかわかりません25 25
。i
なぜ25の値を取得するのか本当にわかりませんj
。2番目の条件から25の値に達している理由を誰かに説明してもらえますか?これは、1つのforループで2つの条件をチェックする問題ですか?
これはコンマ演算子の効果です。これは、テストの最初の引数を無視し、テスト結果の 2 番目の引数を返すことを意味します。
;
ループの最後にセミコロン ( ) があるため
for(i=0,j=0;i<5,j<25;i++,j++);
^
あなたのforループはずっと「静かに」実行され(j<25
条件のみを考慮して)、それが完了すると、両方の変数の値は25
.
これを確認するためにループの実行中に出力を表示する場合は、ステートメント;
の末尾からを削除します。for
両方の値に基づいてループを終了したい場合は、おそらく(and) 演算子を使用する必要がi < 5
あります。j < 25
&&
これは、c でコンマ演算子がどのように機能するかによるものです。
i = (a,b);
これは に割り当てb
られi
ます。あなたの場合のようにチェックとして使用され、ループ i<5,j<25
j<25
の値の影響はありません。i
あなたが達成したいことは次のとおりです。
i<5&&j<25
出力が5,5
.
各反復の出力を印刷する場合は、for の末尾にあるセミコロンを削除します。
この,
演算子は、最初の引数を無視して 2 番目の引数を返すものです。したがって、2 番目の条件のみが適用されます。必要なのは&&
.
i < 5
ループが trueになるまで実行する必要j < 25
がある場合。&&
これは、演算子を使用するためのコードです。
int i = 0, j = 0;
for(i=0,j=0; i<5 && j < 25; i++,j++);
cout<<i <<" "<<j;
ここで、i と j は両方とも 5 になります。
OR( ||
) 演算子を使用すると、i と j の両方が 25 になり、両方の条件が false になるまで for ループでインクリメントされます。
i を 5 に、j を 25 にするには、2 つのループを記述するか、次のコードを使用することをお勧めします。
int i = 0, j = 0;
for(i=0,j=0; j < 25; j++)
{
if( i < 5 )
{
i++;
}
}
cout<<i <<" "<<j;