강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

커피는 마끼아또님의 프로필 이미지
커피는 마끼아또

작성한 질문수

홍정모의 따라하며 배우는 C언어

5.2 대입 연산자와 몇 가지 용어들

c = TWO * (a+b); 에서 a와 b는?

작성

·

27

·

수정됨

1

63강 강의 12분 쯤

L/R Value 에 대해 예시에서 설명해주셨습니다.

 

그 중 (a+b)는 임시 값이므로 R Value 라고 설명해주셨는데,

여전히 괄호 안의 a와 b 각각은 L value 라고 이해되는데 맞나요?

 

추가 질문으로 c = TWO * (a+b) 에서

우측의 TWO * (a+b) 역시 임시로 값들이 계산이 되고 나중에 c 라는 변수에 대입이 될 것인데

그렇다면 TWO * (a+b) 이것 또한 R value 라고 봐야 할 까요?

 

 

답변 2

0

안녕하세요? 질문&답변 도우미 durams입니다.

이번 강의에서 소개된 개념은 Value category라고 하는 것인데요, 이름은 value category지만 사실 값을 분류하는 것이 아닌 expression (표현식)을 분류하는 개념입니다. 그러니 단일 키워드에 대해서만 적용되는 분류 기준이 아닌 것이죠.

  1. 괄호 안의 ab 각각은 lvalue가 맞습니다. ab라는 식별자는 변수로써 메모리를 점유하고 있기 때문입니다.

  2. TWO * (a + b)는 rvalue가 맞습니다. 변수 c에 담기는 것과 별개로, 해당 expression의 결과는 임시로 존재하는 rvalue입니다.

강의에서는 간단히 lvalue가 메모리를 차지하고 있는 객체라고 표현되었지만, 대부분의 경우에 맞는 설명입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 커피는 마끼아또님.

L/R Value에 대한 질문을 주셨네요. 이 개념은 C언어와 같은 프로그래밍 언어에서 매우 중요한 부분입니다.

  1. (a+b) 안의 ab에 대한 질문:

    • 맞습니다. ab 각각은 L-value로 취급됩니다. L-value는 메모리 위치를 나타내며, 이 경우 ab는 각각 메모리에 할당된 변수입니다.
    • 반면, (a+b)는 두 L-value(ab)의 결과로 계산된 값이며, 이는 R-value로 취급됩니다. R-value는 실제 값 그 자체를 나타내며 임시적으로 생성됩니다.
  2. c = TWO * (a+b)에서의 R-value 여부:

    • TWO * (a+b)는 또한 R-value입니다. 여기서는 L-value인 ab를 사용하여 (a+b)를 계산하고, 그 결과에 TWO를 곱하는 연산을 수행합니다. 이 때 TWO * (a+b)의 결과는 R-value이고, 최종적으로 이 값이 c에 대입됩니다. 대입 후에 c는 L-value로 사용될 수 있습니다.

관련한 이해를 돕기 위한 내용으로 참고할 만한 게시물이 있습니다:
- C 언어에서 L-value와 R-value의 차이점 이해하기

이 설명이 도움이 되셨기를 바랍니다. 추가적으로 궁금한 부분이 있다면, 언제든지 질문해 주세요. 😊

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

커피는 마끼아또님의 프로필 이미지
커피는 마끼아또

작성한 질문수

질문하기