명시적 형변환

(원하는 타입)값의 형식으로 한 값의 자료형을 바꿔줄 수 있습니다.

#include <stdio.h>
int main() {
      float a = 6.5;
      int b = (int)a;
      printf("a: %.1f\n", a);
      printf("b: %d\n", b);
      return 0;
}

a: 6.5

b: 6

사실, 이런 상황에서는 (int)를 쓰지 않아도 자동으로 바꿔주지만, 이것은 '묵시적 형변환'에서 다룰 것입니다. 묵시적인 형변환이 일어나는 상황에서는 정해진 대로만 자료형이 바뀌기 때문에, 좀 더 확실하게, '명시적으로' 자료형을 바꿔주고 싶다면 명시적 형변환을 해 주세요. 명시적 형변환은 포인터를 사용할 때 그 진가를 발휘하니, 기대해도 좋습니다.

명시적 형변환을 하면, 값이 손실될 수도 있습니다.

#include <stdio.h>
int main() {
      printf("%hX\n", (short)0x12345678);
      return 0;
}

5678

사실 저 코드에서 %hX%X로 바꾸거나, (short)를 빼도 같은 결과를 얻을 수 있습니다. 하지만 둘 다 빼는 것은 안됩니다. printf가 인자를 받는 방식(가변 인자)에 대해 공부해 보면 그 이유를 알 수 있습니다만, 여기서는 다루지 않았으니 일단은 '그렇구나' 하고 넘어가시고, 책을 모두 읽은 다음 스스로 공부해 보세요.