条件演算子 (?:) の型システムと値カテゴリ
C では、条件演算子 (?:) は次のように評価されます。特定の型の値と値カテゴリ。メモリ内のオブジェクトを参照できるかどうかを定義します。
In最初に提供された例:
int x = 1; int y = 2; (x > y ? x : y) = 100;
x と y は両方とも int 変数であり、条件 x >
y は false です。したがって、y には 100 の値が割り当てられます。両方のオペランドの型が同じであるため、条件式自体は左辺値になり、代入できることを意味します。ただし、2 番目の例では:int x = 1; long y = 2; (x > y ? x : y) = 100;x は int で、y は long であるため、オペランドの型が異なります。 x と y を比較するには変換が必要です。その結果、条件式は左辺値ではなく右辺値になります。右辺値を代入できないため、この場合の代入は無効です。要約すると、2 番目と 3 番目のオペランドが同じ型の左辺値である場合、条件式は左辺値となり、結果への代入が可能になります。型が異なる場合、条件式は右辺値となり代入できません。
以上がC の条件演算子 (?:) はオペランドの型に基づいて左辺値または右辺値をどのように決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。