int와 long은 똑같이 4byte의 크기를 가진다.
int와 long int의 크기가 같은것이 모순적이라 생각했다.
C언어가 출시될 당시인 1972년에는 16bit 프로세서가 대중적으로 사용되었다.
int 자료형은 가장 효율적으로 처리될 수 있는 정수 타입을 목표로 개발되었다.
따라서 int의 크기는 프로세서 아키텍처에 따라 크기가 달라진다
16bit -> 2byte
32bit -> 4byte
그러나 64bit 아키텍처가 개발되면서 문제점이 발생했다.
아키텍처마다 서로 다른 int의 크기가 문제가 되기도 하고
4byte 크기의 long보다 int의 크기가 더 커져버릴 수 있는 언어적 모순이 발생했다.
따라서 64bit 아키텍처에선 int의 크기를 4byte로 유지시켰다.
long은 64bit환경에서 일반적으론 8byte크기이지만
Windows OS에서만 4byte로 고정이다.
따라서 크로스플랫폼 개발시 Windows가 포함되어 있다면
long보다는 stdint.h에 포함된 int32_t, int64_t를 사용하는 편이 낫다.