C/C++ 심화

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

Expression

Expression은 C언어에서 아주 많이 사용되고 중요한 요소이기 때문에

이에 대한 깊은 고찰이 필요합니다.

 

Expression은 Evaluation될 수 있으며 모든 Expression은 상호독립적인 두 가지 속성을 가집니다.

바로 Type과 Value Category 입니다.

 

Type은 Data Type(자료형)을 의미합니다.

앞으로 표기하기를, Expresion : Type 과 같은 형태로 표기하도록 하겠습니다.

a : int 이고 b : int 라면,

a + b : int 입니다.

a : long long 이고 b : int 라면,

a + b : long long 입니다.

a : int 이고 b : char 라면,

a = b : int 입니다.

 

어떠한 Expression의 타입은

그 식이 완전히 Evaluation(람다대수의 Beta-reduction)이 이루어진 후에 남는 값이

가지는 타입이라고 볼 수 있습니다.

이 것은 수학/물리학의 단위와도 같이 계산의 무결성을 테스트할 때 사용될 수도 있습니다.

 

Value Category는 타입에 비해서 좀 더 생소한 단어일 수 있습니다.

C언어서는 Value Category를 두 가지로 분류하고 있습니다(C++11에서는 다섯 가지로 분류합니다).

l-value와 r-value이지요.

 

l-value는 left-value를 의미하며, r-value는 right-value를 의미합니다.

이 이름은 그 유래가 대입연산자(=)의 왼쪽에 오는가 오른쪽에 오는가에 있지만,

그 의미가 시간이 지남에 따라 심화되면서 현재는 꼭 그런 의미로 받아들일 수만은

없게 되었습니다.

 

l-value인 Expression은 스스로 identity를 가지는 식을 의미합니다.

r-value인 Expression은 값은 있으되 identity가 없는 식을 의미합니다.

  • 봤어요 (0명)

댓글

댓글 본문
작성자
비밀번호
graphittie 자세히 보기