> 백엔드 개발 > C++ > C 유형 추론은 조건식의 Lvalue/Rvalue 동작에 어떤 영향을 줍니까?

C 유형 추론은 조건식의 Lvalue/Rvalue 동작에 어떤 영향을 줍니까?

Linda Hamilton
풀어 주다: 2024-12-10 12:39:11
원래의
266명이 탐색했습니다.

How Does C   Type Inference Affect the Lvalue/Rvalue Behavior of Conditional Expressions?

조건식의 유형 추론

조건 연산자(?:)는 C의 강력한 도구로, 간결하고 표현력이 풍부한 코드를 허용합니다. 그러나 올바른 사용을 위해서는 이 연산자의 결과 유형을 이해하는 것이 중요할 수 있습니다.

다음 코드 예제를 고려하세요.

int x = 1;
int y = 2;
(x > y ? x : y) = 100;
로그인 후 복사

이 경우 첫 번째 조건부 연산자는 rvalue로 평가됩니다. 두 피연산자가 모두 int 유형이므로 int를 입력합니다. 따라서 할당은 유효합니다.

그러나 다음 예에서는

int x = 1;
long y = 2;
(x > y ? x : y) = 100;
로그인 후 복사

두 번째와 세 번째 피연산자의 유형이 다르기 때문에 조건 연산자를 lvalue로 평가할 수 없습니다. 결과적으로 이 표현식에 대한 할당은 유효하지 않습니다.

error: lvalue required as left operand of assignment
      |     (x > y ? x : y) = 100;
      |     ~~~~~~~^~~~~~~~
로그인 후 복사

이 동작을 이해하려면 C의 값 범주 개념을 자세히 살펴봐야 합니다.

조건식은 해당 유형을 상속하고 피연산자의 값 범주입니다. 두 피연산자가 모두 lvalue이면 조건식도 lvalue입니다. 피연산자 중 하나가 rvalue이면 조건식은 rvalue입니다.

첫 번째 예에서 x와 y는 모두 동일한 유형의 lvalue이므로 조건식은 int 유형의 lvalue로 평가됩니다. 두 번째 예에서 x는 lvalue이지만 y는 rvalue이므로 조건식을 lvalue로 평가할 수 없습니다.

조건 연산자의 값 범주는 컴파일 타임에 결정된다는 점을 기억하는 것이 중요합니다. 조건이 false로 평가되더라도 조건식의 유형 및 값 범주는 일관되게 유지되어야 합니다. 이는 할당 연산자의 왼쪽이 lvalue여야 한다는 규칙에 따른 것입니다.

위 내용은 C 유형 추론은 조건식의 Lvalue/Rvalue 동작에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿