왜 C에서 int는 최소 16비트일까?

업데이트:

C89 표준에서는 int기본 자료형이

short 형보다 크고, 최소 16비트 이상인 자료형

으로 명시되어있다. 다른 대부분의 언어는 4바이트인데 왜 그럴까?

  • int : 그냥 정수라는 의미
    • CPU에게 ‘정수 처리해!’ 명령하면 CPU가 딱 아는 크기여야 한다.
    • 그게 무슨 크기?
      • CPU 의 ALU (Arithmetic Logic Unit) 가 사용하는 기본 데이터
      • 이 데이터를 word라고 하고, 크기를 워드 크기라고 한다.
      • 워드 크기는 레지스터 크기와 일치한다!

즉, int 자료형의 크기는 CPU에 따라 달라질 수 있으므로 표준에서는 저렇게 명시한 것이다.

더해서, 과거에는 16비트 CPU가 흔했기에 최소 16비트로 명시해두었다.

64비트 플랫폼

이후에 32비트 컴퓨터가 나오면서 int는 32비트가 됨

65비트 컴퓨터인데? 그래도 32비트로 유지됨 왜?

  • 원칙적으로 C표준을 어긴 것
  • 32비트에서 64비트로 바꾼다고 성능이 무조건 빨라지는것도 아님 (캐시 메모리 등의 이유)
  • 이전까지 int가 32비트로 작성된 프로그램이 너무 많음

참고

POCU 강의 “C 언매니지드 프로그래밍”

태그: ,

카테고리:

업데이트:

댓글남기기