l-value와 r-value

개발자는엉금엉금·2022년 10월 15일
0

따배cpp

목록 보기
3/8

변수의 초기화와 할당

  • int x; : int형 메모리의 이름을 x라고 붙이겠다(선언)
  • x = 1; :이름 붙인 x에 1을 assign한다
  • int x = 1; 선언과 할당을 동시에 한 것을 변수의 초기화(initialize to a variable)라 한다.

    초기화를 하지 않으면 메모리 공간에 쓰레기 값이 들어가서 런타임 에러를 일으킨다.

l-value와 r-value

  • l-value:메모리 공간에 대한 주소를 갖고 있는 것, 즉 0x000..으로 시작되는 16진수의 주소값을 가지고 있음
    💡MS 공식문서에서, l-value는 메모리의 위치를 표현하는 Location에서 따왔다고 한다.
  • r-value: 임시 객체나 값을 저장하는 것 즉, int x = 1; x = x+2;에서 x는 여전히 l-value이지만, x+2는 임시값을 저장하는 r-value이다.

예시

int x = 1;
	x = x + 2;
	cout << x << endl; // 3

	int y = x;
	cout << y << endl; // 3

	cout << x + y << endl;
    
    return 0;

  • x+y는 6이라는 임시값을 저장하므로, 우값이다. 실제로 주소를 참조하기 위해 &(x+y)를 찍어보면 좌값을 참조하라고 에러메시지가 나온다.

0개의 댓글