반응형
#include <stdio.h>
int main()
{
int a1 = 10.1;
printf("%d\n", a1);
double a2 = 7;
printf("%lf\n", a2);
int b1 = 10;
short b2 = 20;
int b3 = b1 + b2;
printf("%d\n", b3);
return 0;
}
10.1 은 double 인데, int a1 에 할당될 때, int 로 형변환 된다.
이것을 암묵적 형변환이라고 한다.
7 (int) 가 a2 로 들어갈때 double 로 형변환 되어지고(암묵적으로)
b1(int) 과 b2(short) 가 더해질때 b2 가 int 로 형변환이 이루어진다.(역시 암묵적으로)
#include <stdio.h>
int main()
{
float a = 10.0f;
double b = 20.0;
float c = a + b;
printf("%d\n", sizeof(a + b));
printf("%d\n", sizeof(c));
return 0;
}
// 결과
// 8
// 4
a 는 float 이고, b 는 double 이다.
a+b 는 double 로 형변환 되었음을 알 수 있고, (sizeof(a+b) 가 8 이므로)
이런 a+b 가 c 로 들어가면서 다시 float로 형변환 되었음을 알 수 있다. (sizeof(c) 가 4 이므로)
이런식으로 자동으로 형변환이 이루어지는것을 암묵적 형변환 이라고 한다.
#include <stdio.h>
int main()
{
float a = 1.3f;
float b = 1.8f;
int c = a + b;
printf("%d\n", c);
int d = (int)a + (int)b;
printf("%d\n", d);
return 0;
}
// 결과
// 3
// 2
c 는 둘다 float 인 a+b 가 3.1f 가 된 후에 c 로 대입될때 int 로 암묵적 형변환이 일어나서
c 에는 3이 대입되었다.
d 는 float 인 a 와 b 를 각각 (int) 로 명시적으로 형변환을 한 후에
(int)a 는 1이 되고, (int)b 는 1 이 되어서 그 결과 d 에는 2가 대입되었다.
이런식으로 필요에 의해서 사용자가 명시적으로 형변환을 하는경우
명시적 형변환이라고 한다.
반응형
'C언어(2020년)' 카테고리의 다른 글
32. 함수 포인터 (0) | 2020.11.04 |
---|---|
31. sizeof (0) | 2020.11.04 |
30. 문자열 (0) | 2020.11.04 |
29. typedef (0) | 2020.11.04 |
28. union (0) | 2020.11.04 |