>백엔드 개발 >C++ >C의 조건 연산자(?:)는 피연산자 유형에 따라 Lvalue 또는 Rvalue를 어떻게 결정합니까?

C의 조건 연산자(?:)는 피연산자 유형에 따라 Lvalue 또는 Rvalue를 어떻게 결정합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-08 18:48:12432검색

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

조건 연산자(?:)의 유형 시스템 및 값 범주

C에서 조건 연산자(?:)는 메모리에 있는 객체를 참조할 수 있는지 여부를 정의하는 특정 유형 및 값 범주의 값입니다.

첫 번째 예에서 제공됨:

int x = 1;
int y = 2;
(x > y ? x : y) = 100;

x와 y는 모두 int 변수이고 조건 x > y는 거짓입니다. 따라서 y에는 값 100이 할당됩니다. 두 피연산자의 유형이 동일하므로 조건식 자체가 lvalue가 되어 할당될 수 있습니다.

그러나 두 번째 예에서는 다음과 같습니다.

int x = 1;
long y = 2;
(x > y ? x : y) = 100;

x는 int이고 y는 long이므로 피연산자의 유형이 다릅니다. x와 y를 비교하려면 변환이 필요하며, 그 결과 조건식은 lvalue가 아닌 rvalue가 됩니다. rvalue를 할당할 수 없으므로 이 경우 할당은 유효하지 않습니다.

요약하면 두 번째와 세 번째 피연산자가 동일한 유형의 lvalue이면 조건식은 lvalue이므로 결과에 할당할 수 있습니다. 유형이 다른 경우 조건식은 rvalue가 되어 할당할 수 없습니다.

위 내용은 C의 조건 연산자(?:)는 피연산자 유형에 따라 Lvalue 또는 Rvalue를 어떻게 결정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.