lvalue와 value는 모두 Data Type을 갖지만, 차이가 존재한다

MySprtlty·2023년 8월 10일
2

C

목록 보기
16/37

🏷️lvaluevalue는 모두 Data Type을 갖지만, 차이가 존재한다

  • lvalue는 data type을 가지며, type qualifier(형 한정자)도 data type에 포함시킨다.
    • 🔍ex) type qualifier에는 const, volatile, restrict가 있다.
  • type qualifier는 object(대상체)에 부여되는 성질이다.

  • value(값) 또한 data type을 갖지만, type qualifier는 data type에 포함되지 않는다.
  • rvalue도 value라서 data type을 갖는다.
  • 따라서 lvalue를 평가할 때, value자체는 type qualifier가 의미가 없으므로 type qualifier를 제한다.
    • 🔍ex) lvalue의 data type이 const int일 때, rvalue(읽어오는 값)은 int가 된다.
    const int ci = 100, *pci = &ci;
    printf("%d", *pci);
    • lvalue *pci의 data type은 const int지만, 이 수식이 평가되어 나온 값(rvalue, 여기서는 100)의 data type은 const가 제거된 int다.
  • 상수(프로그래머가 소스 코드에 직접 기입해주는 값)도 value이므로 data type을 갖는다.

  • 정리하면, type qualifier는 object에 부여되는 성질이기 때문에 value는 type qualifier를 data type에 포함시키지 않는다.
  • 별로 중요하지 않은 내용 같지만, compatible type(호환형)을 이해하기 전에 알아둬야 하는 개념이다.

2개의 댓글

comment-user-thumbnail
2023년 8월 10일

유익한 글이었습니다.

1개의 답글