0

私は?を使用しています 演算子と私は次のことを表現したい

  (a > b) ? (max = a) : (); // basically i want expression after `:` to be null

:コンパイラが正しくない構文を要求した後、空の括弧を残した場合。:空の後に式を残すための正しい構文は何ですか?

4

3 に答える 3

7

私はコードの簡潔さが好きですか?オペレーター

if (a > b) max = a;文字数を数えている場合は、より簡潔です。これはひどい指標です。

理想的には、三項演算子によって副作用が発生しないようにする必要があります。三項演算子内に副作用を隠すと、コードの読み取り/デバッグ/保守などが難しくなります。

副作用が必要な場合は、三項演算子を使用しないでください。

そのために三項演算子を使用したい場合は、 を検討してmax = (a > b) ? a : maxください。

于 2013-01-31T04:25:51.703 に答える
2

どうぞ、三項演算子です。それは形です

   <condition> ? <r-value1> : <r-value2>

条件が真の場合、r-value1 を返します。それ以外の場合は、r-value2 を返します。

したがって、あなたが望むことを行う1つの方法は次のとおりです。

  (a > b) ? (max = a) : 0; 

0 は同じ型の右辺値なので問題ありません。

ただし、これは恐ろしいコードの書き方であることに注意してください。とても読みにくいです。

学習演習としては問題ありませんが、それ以外の場合は、誰もが言うように、

  if (a>b) max=a;
于 2013-01-31T04:32:50.073 に答える
0

これは三項演算子と呼ばれるもので、空白にしておくだけのクリーンな方法はありません。次のような回避策があります。

(a > b)?max=a:max=max;

しかし、それは実際にはあまり効率的ではありません。それにアプローチする最も効率的な方法は、@ta-speot-が言及されているように、三項演算子の代わりに省略された条件文を使用することです

于 2013-01-31T04:32:35.517 に答える