1

私は他の誰かのコードを調べていましたが、次の構文を取得できませんでした

c = x<0 ? x = -x,'L':'R';

if(x) x--,putchar(c);

意味論によると、最初の変数 c に 'L' または 'R' が割り当てられていることは明らかです。2 番目の変数では、x-- と putchar() の両方が実行されます。しかし、ここでのコンマ演算子の役割は正確には何ですか??

4

3 に答える 3

5

コンマ演算子は両方の式を評価し、最後の値を返します。

  • 最初の式は、1 つのステートメントで 2 つのことを行います。'L' または 'R' を選択し、'L' を選択した場合は x をその負の値に設定します。
  • 2 番目の式 (「if」の後の部分) は、x をデクリメントしてから文字を入れます。これの意味は、より多くのコンテキストがないと明確ではありません。

コンマ演算子ではなく別のステートメントを使用することで、両方の読みやすさを向上させることができます。if1 つ目は、ステートメントを条件式に押し込もうとします。しかし、2 番目は既にifステートメントを使用しているため、なぜコンマ演算子が選択されたのかはまったく不明です。

于 2013-05-23T22:17:34.303 に答える
2

そのコンテキストでのコンマ演算子の役割は、条件演算子の使用を許可し、式の 1 つの評価の一部として割り当てを記述することです。

私の意見では、これは恐ろしいスタイルです。ステートメントは、そのコードのif意図をより適切に伝え、効率が低下することはほとんどありませんでした。

于 2013-05-23T22:18:33.973 に答える