?: 演算子は C の if()...else ステートメントより高速ですか ?
C では、三項演算子 (? :) および if()...else ステートメントは、条件分岐機能を提供します。ただし、それらのパフォーマンスは同一ではありません。
速度の比較
三項演算子は本質的に if()...else ステートメントより速いわけではありません。コンパイルされたコードでは、両方の構造が条件分岐を実行するアセンブリ命令に変換されます。条件の評価と適切な分岐の選択のオーバーヘッドは、どちらの演算子でも同様です。
例外
ただし、この一般規則には重要な例外が 1 つあります。条件式に基づいて定数変数を初期化する場合、三項演算子には独自の利点があります。次の例を考えてみましょう。
const int x = (a < b) ? b : a;
この場合、コンパイラは、分岐コードを生成することなく、比較の結果に初期化される定数変数を作成することで式を最適化できます。
const int x = b; // If a < b const int x = a; // If a >= b
非定数変数は式で初期化できないため、この最適化は if()...else ステートメントでは実行できません。代わりに、コンパイラは条件ステートメントの分岐コードを生成する必要があります。
したがって、?: 演算子は一般に高速な実行を提供しませんが、条件式に基づいて定数変数を初期化する場合には独特の利点をもたらします。
以上が定数変数を初期化する場合、三項演算子は if()...else ステートメントより高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。