문타쿠, 공부하다.
[C언어 코딩 도장] Unit 16. 자료형의 확장과 축소 알아보기 본문
서로 다른 자료형끼리 연산을 하면 어떤 현상이 발생할까?
16.1 자료형의 확장 알아보기
"정수와 실수를 함께 연산했을 때"
#include <stdio.h>
int main(void)
{
int num1 = 11;
float num2 = 4.4f;
printf("%f\n", num1 + num2);
printf("%f\n", num1 - num2);
printf("%f\n", num1 * num2);
printf("%f\n", num1 / num2);
return 0;
}
- 정수와 실수를 함께 연산하면 결과 값은 실수로 나온다. -> 실수가 정수보다 표현 범위가 넓기 때문
- 자료형을 섞어서 사용하면 컴파일러에서 암시적으로 형 변환을 하게 되는데 자료형의 크기가 큰 쪽, 표현 범위가 넓은 쪽으로 자동 변환된다. 이를 형 확장이라고 하며 값이 버려지지 않고 그대로 보존된다.
"크기가 다른 정수끼리 연산"
#include <stdio.h>
int main(void)
{
long long num1 = 123456789000;
int num2 = 10;
printf("%lld\n", num1 + num2);
printf("%lld\n", num1 - num2);
printf("%lld\n", num1 * num2);
printf("%lld\n", num1 / num2);
return 0;
}
- 크기가 큰 쪽, 표현 범위가 넓은 long long으로 변환
16.2 자료형의 축소 알아보기
"실수를 정수로 변환하기"
#include <stdio.h>
int main(void)
{
float num1 = 11.0f;
float num2 = 5.0f;
int num3 = num1 / num2;
printf("%d\n", num3);
return 0;
}
- 실수에서 정수로, 표현 범위가 좁은 쪽으로 변환을 하게 되면 값의 손실이 생긴다.
- 위와 같이 자료형의 크기가 작은 쪽, 표현 범위가 좁은 쪽으로 변환되는 것을 형 축소라고 한다.
- 형 축소가 일어나면 값이 손실 즉, 값이 버려질 수 있다.
"크기가 다른 정수끼리 연산"
#include <stdio.h>
int main(void)
{
char num1 = 28;
int num2 = 1000000002;
char num3 = num1 + num2;
printf("%d\n", num3);
return 0;
}
'C언어 > C언어 코딩 도장' 카테고리의 다른 글
[C언어 코딩 도장] Unit 17. if 조건문으로 특정 조건일 때 코드 실행하기 (0) | 2023.08.24 |
---|---|
[C언어 코딩 도장] Unit 16. 연습문제 및 심사문제 (0) | 2023.08.23 |
[C언어 코딩 도장] Unit 15. 연습문제 및 심사문제 (0) | 2023.08.23 |
[C언어 코딩 도장] Unit 15. 나머지 연산하기 (0) | 2023.08.23 |
[C언어 코딩 도장] Unit 14. 연습문제 및 심사문제 (0) | 2023.08.23 |