프로그래밍

c언어/c++ int 크기

업글 2020. 11. 11. 23:21

안녕하세요 업글입니다. 이번에는 c언어에서 int 크기에 대해서 포스팅 해보겠습니다.

 

신입사원 시절 선배가 int의 크기가 몇이냐고 물어봤을 때 고민없이 4라고 대답한 적이 있었습니다.

이 때, stm32계열의 mcu를 사용하고 있었으므로 sizeof(int)를 했을 때 4로 출력이 되었고

stm32 mcu에서 int의 크기는 4가 맞았었습니다.

 

지금 시점에서 제가 생각하는 적절한 대답은

"시스템에 따라서 달라진다. 예를 들어서 32bit시스템에서는 4바이트이다" 입니다.

간혹 OS에 따라서 달라진다라고 대답하는 사람들이 있습니다.

이 대답도 틀린말은 아니지만 OS가 탑재되지 않은 CPU도 있기 때문에 완전히 맞다고 볼수는 없을 것 같습니다.

 

int가 시스템에 따라 다른 이유는 int는 CPU에서는 word 단위로 연산하게 되는데

이때 word의 크기가 int의 크기와 동일하게 됩니다.

그러므로 CPU에서 처리하는 기준에 따라 int크기가 달라지게 됩니다.

 

int뿐만 아니라 다른 자료형의 크기도 시스템에 따라 달라질 수 있기 때문에

자료형을 typedef를 사용하여 별칭을 생성해주거나 #include <stdint.h>를 사용하는 것을 추천드립니다.

32bit visual studio 2019에서 예를들어 설명드리겠습니다.

예제1.

typedef char INT8

typedef short INT16

typedef int INT32

typedef long long INT64

typedef unsigned char UINT8

typedef unsigned short UINT16

typedef unsigned int UINT32

typedef unsigned long long UINT64

 

예제2.

#include <stdint.h>

 

int8_t // char

int16_t // short

int32_t // int 

int64_t // long long

uint8_t // unsigned char

uint16_t // unsigned short

uint32_t // unsigned int 

uint64_t // unsigned long long

 

위와 같이 코드를 구현하게 되면 시스템에 달라지게 되어도 자료형의 크기만 변경해주면 되므로

다른 시스템에서도 코드를 쉽게 재사용 할 수 있게 됩니다.

'프로그래밍' 카테고리의 다른 글

c언어/c++ sizeof  (0) 2020.11.12
쓰레드(Thread)에 대한 생각  (0) 2020.11.12
c언어/c++ const  (0) 2020.10.21
주석에 대한 생각  (0) 2020.10.19
c언어/c++ static  (0) 2020.10.19