본문 바로가기

BackEnd/C

연산의 결과가 남기는것은?

반응형

1. lvalue 와 rvalue란?


우선 lvalue 와 rvalue에 대해 알아보자


1) lvalue 란?


- left value의 줄임말이다.


- 대입 연산자의 왼편에 올 수 있는 대상을 총칭하는 표현이다.


- 즉 lvalue는 대입이 가능한 대상이어야 한다.


- 대입 연산자의 왼편에 올 수 있는 가장 대표적인 대상은 변수이다.


- 하지만 왼편에 올 수 있는 것으로 변수가 전부는 아니다.


- 따라서 변수는 lvalue이지만 lvalue가 꼭 변수인것은 아니다. 



2) rvalue 란?


- right value의 줄임말이다.


- 대입 연산자의 오른편에 올 수 있는 대상을 의미하며, lvalue의 상대적인 표현을 위해서 등장한 표현이다.



2. 연산자는 연산이 끝나고 무엇을 남길까?

 

연산자는 연산을 하고나면 무엇인가를 반환한다.


보통 대입 연산자는 대입만 하는 줄 안다. 하지만 대입을 하고 대입이 된 값을 반환한다.


1) num1 = num2 = num3; 


만약 num3 의 값이 5라면 5의 값을 num2에 대입하고서 5라는 상수 값을 반환한다.


2) num1 = (num2 = num3); 


3) num1 = 5


결국 대입연산자가 반환한 것은 상수이지 lvalue가 아니다.


다음과 같은경우 컴파일러는 에러 메시지를 전달한다.


(num1 = num2) = num3;


왜냐하면 대입연산자의 왼편에는 lvalue이어야하는데 왼편에는 상수가 반환되기 때문이다.


하지만 아직 소개하지 않은 연산자 중에 lvalue를 반환하는 연산자들도 있다 추후 살펴보자.







반응형

'BackEnd > C' 카테고리의 다른 글

함수란 무엇인가?  (0) 2018.12.18
산술연산 과정에서 발생하는 형 변환의 규칙  (0) 2018.12.18
sizeof 연산자  (0) 2018.12.18
자료형 변환 연산자  (0) 2018.12.10
관계연산자와 논리연산자  (0) 2018.12.10