C언어(2020년)

33. 형변환

리더2333 2020. 11. 4. 16:51
반응형
#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