long이 int보다 더 큰 범위를 보관할 수 있다고 보는것은 옳지 않다.

int는 운영체제의 환경(32bit, 64bit 등)에 맞는 크기로 사용되어 왔는데 아래와 같이 16비트 운영체제에서는 16비트로 사용되었고 32비트 운영체제에서는 32비트로 사용되었는데 64비트 운영체제에서 int가 64비트가 되면 long보다 크기가 커지게 되므로 int가 아닌 long을 8바이트로 늘려서 사용하게 되었다고 한다.

그러므로 32비트 기반으로 컴파일하게 되면 int와 long의 자료형의 길이는 같다.(windows의 경우 64비트로 컴파일해도 같다. 이유는 맨 아래에)

 

16비트 운영체제

  - short : 16비트

  - int : 16비트

  - long : 32비트

 

32비트 운영체제 

  - short : 16비트

  - int : 32비트

  - long : 32비트

 

64비트 운영체제 

  - short : 16비트

  - int : 32비트

  - long : 64비트

 

단 windows운영체제에서는 int와 long을 64비트에서도 4바이트로 사용한다.

운영체제 char short int long 포인터
Windows 1바이트 2바이트 4바이트 4바이트 8바이트
UNIX 1바이트 2바이트 4바이트 8바이트 8바이트