프로그래밍 중 서로다른 자료형으로 연산을 할 때가 많음
서로다른 자료형끼리 연산을 할 때 정해진 규칙에 대해 알아보자
int main()
{
int num1 = 11;
float num2 = 4.4f;
}
위 코드처럼 정수와 실수를 선언하고
printf("%f \n", num1+num2);
위 코드 오류 안 남 - %f
printf("%d \n", num1 + num2);
위 코드 오류 남 - %d
이유:
자료형을 섞어서 계산을 하면 컴파일러에서 '암시적 형 변환'함
자료형의 크기가 큰 쪽, 표현 범위가 넓은 쪽으로 자동 변환 됨.
-> '형 확장'이라고 함.
int main()
{
float num1 = 11;
float num2 = 5;
int num = num1/num2;
printf("%d", num);
}
>>> 2
위 코드의 출력값은 2.2가 나와야 하는데 2가 나옴
왜그럴까??
정수형(int)자료형에서는 정수만 나올 수 있으니까 소수점 자리의 0.2는 버려지게 됨
자료형의 크기가 작은쪽, 표현 범위가 좁은 쪽으로 변환되는 것을 '형 축소'라고 함.
형 축소가 일어나면 값의 손실 발생
컴파일 경고가 나오지 않게 하려면 형변환을 해야 함