私はこのコードを持っています:
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;