三項演算子 (?:) は、オペランドの型に応じてさまざまな結果を生成します。これは、特に左辺値参照と右辺値参照に関して混乱の原因となることがよくあります。
最初の例では、条件が評価されて、x が y より大きいかどうかが判断されます。 true の場合、式の結果は x であり、これは左辺値参照です。これにより、後続の行で代入演算子 (=) を使用して値を割り当てることができます。
int x = 1; int y = 2; (x > y ? x : y) = 100; // Assigns 100 to x
ただし、2 番目の例では、2 番目と 3 番目のオペランドの型が異なります (int と long)。 。これを解決するには、コンパイラはオペランドの 1 つを他のオペランドと一致するように変換する必要があります。これにより、式の結果として、左辺値ではなく右辺値が生成されます。
int x = 1; long y = 2; (x > y ? x : y) = 100; // Compilation error: lvalue required for assignment
重要な違いは、三項演算子では、結果の式を次のようにするために、両方のオペランドが同じ型の左辺値である必要があることです。左辺値。この条件を満たさないと、式に値を割り当てようとしたときにコンパイル エラーが発生します。
この動作は、 C の値カテゴリを理解することの重要性を強調しています。三項演算子の場合と同様、左辺値と右辺値によって、式を代入演算のターゲットにできるかどうかが決まります。これらの概念を明確に理解することは、正しく効率的な C コードを作成するために非常に重要です。
以上がC の三項演算子の結果の型 (左辺値または右辺値) は何によって決まりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。