• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

강의 마지막 문제 질문드립니다.

22.04.21 23:02 작성 조회수 283

2

항상 유익한 강의 감사드립니다.

 

제가 생각한 l-value 에 대한 정의는 '메모리 공간에 대한 주소를 갖고 있는 것' 이고,

r-vlaue 는 '임시로 복사가 되는 것' 이라고 생각합니다.

 

(x + y)가 l-value 냐 r-vlaue 냐에 대해 제가 직접 컴파일러를 실행시켜 본 결과, 

cout << &(x + y) << endl; 오류가 발생했습니다.

error: lvalue required as unary ‘&’ operand

즉, 주소값을 갖고 있지 않다고 생각합니다.

그래서, (x + y)는 r-value 라고 생각합니다.

 

새로이 변수 r을 대입해봤을 떄,

int r = x + y;

cout << &r << endl;

r의 주소값이 나온 것으로 보아 

r이 l-value가 되므로, x + y 는 r- value 가 된다고 생각합니다.

 

제가 생각한 부분이 미흡하다면 지적 부탁드립니다.

 

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.04.22

안녕하세요 :)

마지막 예제 속 x+y는 rvalue가 맞습니다.

 

wer070947님의 프로필

wer070947

질문자

2022.04.22

감사합니다.