0

私はこのコードを持っています:

int i = 0, j = 0;
for(i=0,j=0;i<5,j<25;i++,j++);
    cout<<i <<" "<<j;

そして、なぜそれが出力するのかわかりません25 25iなぜ25の値を取得するのか本当にわかりませんj。2番目の条件から25の値に達している理由を誰かに説明してもらえますか?これは、1つのforループで2つの条件をチェックする問題ですか?

4

4 に答える 4

5

これはコンマ演算子の効果です。これは、テストの最初の引数を無視し、テスト結果の 2 番目の引数を返すことを意味します。

;ループの最後にセミコロン ( ) があるため

 for(i=0,j=0;i<5,j<25;i++,j++);
                              ^

あなたのforループはずっと「静かに」実行され(j<25条件のみを考慮して)、それが完了すると、両方の変数の値は25.

これを確認するためにループの実行中に出力を表示する場合は、ステートメント;の末尾からを削除します。for

両方の値に基づいてループを終了したい場合は、おそらく(and) 演算子を使用する必要がi < 5あります。j < 25&&

于 2012-07-04T11:32:48.680 に答える
0

これは、c でコンマ演算子がどのように機能するかによるものです。

i = (a,b);

これは に割り当てbられiます。あなたの場合のようにチェックとして使用され、ループ i<5,j<25 j<25の値の影響はありません。i

あなたが達成したいことは次のとおりです。

i<5&&j<25

出力が5,5.

各反復の出力を印刷する場合は、for の末尾にあるセミコロンを削除します。

于 2012-07-04T11:32:22.667 に答える
0

この,演算子は、最初の引数を無視して 2 番目の引数を返すものです。したがって、2 番目の条件のみが適用されます。必要なのは&&.

于 2012-07-04T11:32:39.710 に答える
0

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;
于 2012-07-04T11:46:48.177 に答える