ホームページ >バックエンド開発 >C++ >C の条件演算子 (?:) はオペランドの型に基づいて左辺値または右辺値をどのように決定しますか?

C の条件演算子 (?:) はオペランドの型に基づいて左辺値または右辺値をどのように決定しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 18:48:12430ブラウズ

How Does C  's Conditional Operator (?:) Determine Lvalue or Rvalue Based on Operand Types?

条件演算子 (?:) の型システムと値カテゴリ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。