조건 연산자(?:)의 유형 시스템 및 값 범주
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!