これは:
int val;
// ...
val = (val != 0) ? otherVal : 0;
これよりも効率が悪い:
int val;
//...
if (val != 0)
val = otherVal;
?
コンパイラは三項演算子を最適化できますか? 意図は明らかです。実際にメモリに 0 を書き込む方法はありますか? メモリがファイルにマップされたときでしょうか?
それは問題ではないと仮定できますか?
編集: ポイントは、1 つの条件が満たされた場合に変数を何らかの値に設定することです。他に分岐する必要はありません。そのため、三項 (コピーを作成することになっている必須の else ブランチを使用) の効率が低下したり、最適化されたりするかどうかを尋ねます。