(int)x는 C++에서 static_cast
캐스트와 같은 C에서는 때때로 다른 유형 데이터를 가리키기 위해 일부 유형 포인터를 캐스트할 수 있습니다. 하나의 정수 포인터가 문자 유형 데이터를 가리킬 수 있는 것처럼 매우 유사하기 때문에 문자는 1바이트이고 정수는 4바이트입니다. C++에서 static_cast<>()는 캐스팅과 같이 C보다 더 엄격합니다. 호환되는 유형 간에만 변환됩니다.
예시 코드
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = (int*)&c; //4-byte
4바이트 포인터에서는 할당된 메모리 1바이트를 가리키고 있기 때문에 런타임 오류가 발생하거나 일부 인접 메모리를 덮어쓸 수 있습니다.
C++에서 static_cast<>()를 사용하면 컴파일러가 포인터와 데이터가 동일한 유형인지 여부를 확인할 수 있습니다. 그렇지 않으면 컴파일 중에 잘못된 포인터 할당 예외가 발생합니다.
char c = 65; //1-byte data. ASCII of ‘A’ int *ptr = static_cast<int>(&c);의 ASCII
컴파일 시간 오류가 발생합니다.