C언어 학습 노트 : 4. 연산자 기초#

1. 대입 연산자 (=)#

  • 대입 연산자는 오른쪽 피연산자의 값을 왼쪽 피연산자에 복사한다.
  • 기존 값은 덮어쓰기(overwrite) 되므로, 원래의 값은 보존되지 않는다.
  • 즉, = 연산은 Copy & Overwrite 과정임을 반드시 인식해야 한다.

2. l-value와 r-value#

(1) l-value#

  • l-value는 location value의 약어로, 메모리의 주소(위치)를 가리키는 값이다.
  • 변수는 대표적인 l-value이다.
  • l-value는 r-value로 사용할 수 있다. (예: x = y;에서 y는 l-value이면서 r-value 역할을 한다.)

(2) r-value#

  • r-value는 단순히 값 자체를 의미하며, 메모리 위치를 직접 지정할 수 없다.
  • 상수나 임시 계산 결과가 r-value에 해당한다.
  • r-value는 l-value가 될 수 없다. (예: 10 = x;와 같은 구문은 오류이다.)

3. 이형 자료 간 연산#

(1) int + int#

  • 결과는 int형이다.
  • 정수 나눗셈을 수행하면 소수점 이하가 절삭되고 몫만 반환된다.
  • 따라서 7 / 32가 된다.

(2) int / double#

  • 서로 다른 자료형을 연산할 경우, 범위가 더 넓은 자료형으로 자동 형변환이 일어난다.
  • 따라서 intdouble로 변환된 후 연산이 수행되어 결과는 double형이 된다.
  • 예: 7 / 3.02.3333…

4. 요약#

  • 대입 연산자는 값을 복사하여 덮어쓰는 연산이다.
  • l-value는 메모리 위치를 의미하며 변수에 해당하고, r-value는 값 자체를 의미한다.
  • 서로 다른 자료형 연산 시, 범위가 더 넓은 자료형으로 승격(promotion) 된다.
  • 정수 나눗셈에서는 소수점 이하는 절삭되므로, 몫과 나머지를 모두 구하려면 두 번의 연산(/, %)을 수행해야 한다.