✅ 목표 (Goal)

C언어에서 형변환의 위험성에 대해서 알아보자.

C언어의 형변환은

어떻게 보면 매우 편리한데 = 다 된다

어떻게 보면 매우 위험하다 = 막되는게 문제

✅ C 스타일 형변환 = 오래된 형변환

C에서는 형변환 시에 아래와 같이 코딩한다.

#include <iostream>

int main() {
	double a = 3.141592;
	int b = 65; // 0x41= 'A';

	int c = (int)a; // 명시적 형 변환 
	char d = b; // 묵시적 형변환

	std::cout << "c=" << c <<std::endl;
	std::cout << "d=" << d << std::endl;

	return 0;
}

이러한 스타일을 C 스타일의 형변환 or 오래된 형변환 이라고 부른다.

현재까지 이러한 방식도 많이 사용되나, C++에서는 C 스타일의 방법이 아닌 C++만의 방법을 제공한다.

char c= 0;
int* pc= (int*)&c; // p는 int*인가? char*인가? int*이다.
*p= 1000; // 이러면 어떻게 되나? 정수가 되나? char가 되나? 1000이 대입이 되어야 하나? 말아야 하나?