정수 자료형중에
int와 long int 는 범위도 같고 크기도 같잖아요
그럼 둘은 같은 자료형이라고 생각해도 되나요?
(int 를 사용해야하는 상황에서 long을 사용한다던지?)
실수 자료형에서도
double 이랑 long double 이 범위도 같고 크기도 같은데
이 두개도 혼용해서 사용해도 되나요?
C 언어는 데이터에 타입이 있습니다.
크기가 같아도 타입은 다르니까 다르게 처리합니다.
https://dojang.io/mod/page/view.php?id=737
UNIT 85.3에서 설명하지만,
플랫폼에 따라서 long의 크기는 다르게 처리됩니다.
long을 64비트로 처리하는 플랫폼도 있습니다.
따라서 int와 long은 32비트로 같아! 라는 전제하에 개발하게 되면 플랫폼이 바뀌었을 때 버그로 이어지기 쉽습니다.
int의 크기도 32비트가 아니라 16비트도 있습니다.
C 언어는 해당 플랫폼에 따라 처리하는 기본 크기가 다릅니다. 역사가 오래된 언어이고, 8비트, 16비트가 최신 플랫폼이었던 시절도 있었습니다. 마찬가지로 32비트가 처음 등장했을 때는 32비트가 최신 플랫폼이었습니다. 64비트 플랫폼도 길게 보면 20년을 넘지 않습니다.
크기가 같아도 타입이 다르면 다른 타입이고, 서식 지정자도 달리 사용합니다. 멀티 플랫폼에서 호환성을 유지하려면 타입의 크기에 대해서 어떤 가정도 하면 안 됩니다.
마이크로소프트가 윈도를 개발할 때는 32비트 플랫폼이었고, 64비트는 나중에 나온 플랫폼입니다. 하위 호환성을 위해 long을 32비트로 결정했습니다. 그러나 리눅스 계열의 플랫폼에서는 long을 64비트로 결정했습니다.