voidassignment_operator(){// expr1 = expr2// expr1 : l-value : 저장공간// expr2 : r-value : 값inta=3;printf("a : %d\n",a);// 대입 연산자의 결과값 = 대입되어 저장된 값이 리턴됨intb;intc=b=a;printf("a : %d / b : %d / c : %d\n",a,b,c);// 중간에 다른 자료형이 있는 경우, 원래의 값이 전달됨 floatd=1.5f;inte;floatf=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
floatd=1.5f;inte;floatf=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 프로그래밍 강의 (방송통신대 - 이병래)
댓글 남기기