Long vs Int in C

Tag “Study”

이 ‘study’ 태그의 목적은 공부하다가 모르는 것이나, 더 자세히 알고 싶은 내용이 생겼을 때 포스팅 하기 위한 태그이다.


Long(4byte) vs Int(4byte) in C

갑자기 운영체제 복습을 하고 백준 문제를 풀려고 했을 때 의문이 생겼다.

lvsint1

C언어에서 long(4byte)와 int(4byte)는 크기가 같은데 왜 구분을 하는 것일까??? Long 안쓰고 그냥 int쓰면 안되는건가??


답을 찾기 위해서 인터넷을 돌아다니던 도중 어떤 블로그글을 보게 됐다. 옛날에 16bit OS에서는 int의 크기가 2byte라고 했다. 또 어떤 블로그에서는 OS가 16/32/64bit 일 때 int의 크기가 다르다고 했다. 따라서 결론적으로는

int size : 16bit→2byte, 32bit→4byte, 64bit→4byte

long size : 16bit→4byte, 32bit→4byte, 64bit→8byte

가 된다…

…진짜??? 라며 좀 더 찾아봤다.


해당 글을 읽어봤다. stackoverflow 사이트에 있는 질문글인데 답변을 살펴보자. (대충 의역했습니다…)


결론

stackoverflow의 답변과 여러 검색을 해본 결과 과거에 16bit OS일 때 int가 2byte, long이 4byte 였을 때가 있었는데 32/64bit OS로 발전함에 따라 최소한으로 보장해주는 크기가 늘어났어서 32bit일 때 크기가 4byte로 표시된 것 같다. 하지만 결론적으로 크기가 정해진 것이 아니라 최소한의 크기를 보장해준다고 생각하면 될 것 같다.