3

これらは両方とも同じコードですか?for ループ内のこれらのステートメントは、コンマで区切られた同じ行に記述されます。それらは左から右に評価されますか?

また、コンマで区切られた for ループ内でステートメントをいくつでも使用できるかどうかを尋ねたかったのです。for(i=0, j=0, k=0; .......) のように?

for(i=0, j= strlen(s)-1; i<j; i++, j--){ 
     c=s[i];
     s[i]=s[j];
     s[j]=c;
}

for(i=0, j= strlen(s)-1; i<j; i++, j--)
      c=s[i],s[i]=s[j],s[j]=c;
4

2 に答える 2

6

C のコンマ演算子は、2 つのオペランドのそれぞれを評価し、最初の結果を破棄して 2 番目の結果を返します。コンマが複数ある場合、演算子は左結合であるため、結果は左から右に評価されます。

したがって、2 番目の例は最初の例と同じことを行います。ただし、セミコロンを使用できないステートメントの本文とは異なり、コンマ演算子を使用する理由がないため、スタイルが良くありません。i=0, j-strlen(s)-1for

于 2014-06-18T19:36:45.330 に答える
3

,演算子は左から右に評価され、左オペランドと右オペランドの評価の間にシーケンス ポイントがあるため、両方のコードが同等であることを意味します。

于 2014-06-18T19:41:19.673 に答える