프로그래밍 하다 보면 내가 원하든, 원하지 않든 자연스래 타입을 변경하여 사용할 때가 있다. int type을 bool로 변경하여 사용하거나, enum 값을 int로 바꿔 비교하거나 하는 방식으로. 이렇게 편리하게 사용 할 수 있는게 장점이지만, 처음에 선언 된 변수의 타입을 강제로 바꾼다는 것 때문에 위험성도 분명히 존재한다. 0. C에서의 casting. C에서의 casting은 매우 위험하다. int main() { double d = 3.2; int* p = (int*)&d; printf("%lf, %d", d, *p); return 0; } 이러한 타입이 아예 다른 변수도 무리없이 캐스팅 되고, #include int main() { const int c = 10; int* p1 = (int*)..