Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 lvalue와 rvalue란 무엇일까요?

C#에서 lvalue와 rvalue의 개념

C#에서 표현식(expression)은 크게 lvaluervalue 두 가지 유형으로 구분됩니다. 이 두 개념은 변수와 값이 메모리에서 어떻게 다뤄지는지 이해하는 데 중요한 기초가 됩니다.

lvalue (좌값)

lvalue는 할당문(대입문)의 왼쪽 또는 오른쪽 어느 쪽에도 위치할 수 있는 표현식을 의미합니다. 일반적으로 lvalue는 메모리상의 특정 위치를 참조하며, 따라서 값을 저장할 수 있는 대상이 됩니다.

rvalue (우값)

rvalue는 할당문의 오른쪽에만 위치할 수 있고 왼쪽에는 올 수 없는 표현식을 의미합니다. rvalue는 주로 계산 결과나 리터럴 값처럼 임시적인 값을 나타내며, 그 자체로는 메모리 위치를 갖지 않습니다.

변수와 리터럴의 차이

변수는 lvalue에 해당하기 때문에 할당문의 왼쪽에 위치할 수 있습니다. 반면 숫자 리터럴(numeric literal)은 rvalue에 해당하므로 값을 할당받을 수 없으며, 할당문의 왼쪽에 나타날 수 없습니다.

예를 들어, 다음은 유효한 C# 문장입니다.

int a = 100;

위 코드에서 변수 a는 lvalue이므로 할당문의 왼쪽에 놓일 수 있고, 숫자 리터럴 100은 rvalue이므로 오른쪽에 위치하여 변수에 저장되는 값이 됩니다.

반대로 아래와 같은 문장은 컴파일 오류를 발생시킵니다.

100 = a; // 오류: 왼쪽에는 lvalue가 와야 합니다.

정리

  • lvalue: 할당문의 왼쪽과 오른쪽 모두에 올 수 있는 표현식 (예: 변수)
  • rvalue: 할당문의 오른쪽에만 올 수 있는 표현식 (예: 숫자 리터럴, 계산 결과)