#C언어
#프로그래밍언어 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 / 3은 2가 된다.
(2) int / double#
- 서로 다른 자료형을 연산할 경우, 범위가 더 넓은 자료형으로 자동 형변환이 일어난다.
- 따라서
int가 double로 변환된 후 연산이 수행되어 결과는 double형이 된다. - 예:
7 / 3.0 → 2.3333…
4. 요약#
- 대입 연산자는 값을 복사하여 덮어쓰는 연산이다.
- l-value는 메모리 위치를 의미하며 변수에 해당하고, r-value는 값 자체를 의미한다.
- 서로 다른 자료형 연산 시, 범위가 더 넓은 자료형으로 승격(promotion) 된다.
- 정수 나눗셈에서는 소수점 이하는 절삭되므로, 몫과 나머지를 모두 구하려면 두 번의 연산(
/, %)을 수행해야 한다.