대입 연산자
정의
- 좌측 피연산자에 우측 피연산자의 값을 저장하는 연산자
- assignment operator
= 로 표현한다.
- 대입 연산자도 연산이다. 그렇다면 연산의 결과값은? 바로 대입된 값
좌측 피연산자(l-value)와 우측 피연산자(r-value)
좌측 피연산자 l-value
- 대입 연산자의 좌측에 있는 피연산자
- l-value 라고도 하며, 저장공간이어야 한다.
- 즉, 우측 피연산자의 값을 저장할 저장 공간이어야 한다.
우측 피연산자 r-value
- 대입 연산자의 우측에 있는 피연산자
- r-value 라고도 하며, 값이어야 한다.
- 즉, 좌측 피연산자의 공간에 저장할 값이어야 한다.
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| void assignment_operator(){
// expr1 = expr2
// expr1 : l-value : 저장공간
// expr2 : r-value : 값
int a = 3;
printf("a : %d\n", a);
// 대입 연산자의 결과값 = 대입되어 저장된 값이 리턴됨
int b;
int c = b = a;
printf("a : %d / b : %d / c : %d\n", a, b, c);
// 중간에 다른 자료형이 있는 경우, 원래의 값이 전달됨
float d = 1.5f;
int e;
float f = e = d;
printf("d : %f / e : %d / f : %f\n", d, e, f);
}
|
1
2
3
| a : 3
a : 3 / b : 3 / c : 3
d : 1.500000 / e : 1 / f : 1.000000
|
대입 연산자의 결과값은 대입된 값이다.
- 대입 연산자도 연산이다. 그렇다면 연산의 결과값은? 바로 대입된 값
1
2
3
4
| float d = 1.5f;
int e;
float f = e = d;
printf("d : %f / e : %d / f : %f\n", d, e, f);
|
1
| d : 1.500000 / e : 1 / f : 1.000000
|
(1) e = d : int 형인 e 에 실수형 1.5f 를 대입했으므로, 소수점 아래가 무시된다.
(2) 따라서 int e 에 대입되는 값은 1
(3) 실수형 f 에 int 형 1 이 대입되면서, 자동으로 큰 수로 형변환이 이루어진다.
(4) 따라서 float f 에 대입되는 값은 1.000000
Reference
C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)
Comments