자료형

자료형Type은 데이터들의 분류로, 같은 성질을 갖는 값들의 집합을 말합니다. C언어에서 기본적으로 제공하는 자료형들은 메모리에서 차지하는 크기와 소수점 유무에 따라 분류되며, char, short, long 등이 있습니다. 각각 1byte, 2byte, 4byte의 공간을 차지합니다.

대표적으로 정수 자료형은 다음과 같습니다.

char 1byte -2~ 27 - 1
unsigned char 1byte 0 ~ 28 - 1
short 2byte -27 ~ 27 - 1
unsigned short 2byte 0 ~ 28 - 1
long 4byte -215 ~ 215 - 1
unsigned long 4byte 0 ~ 216 - 1
long long 8byte -231 ~ 231 - 1
unsigned long long 8byte 0 ~ 232 - 1
int 32bit에서 4byte, 64bit에서 8byte -215 ~ 215 - 1, -231 ~ 231-1
unsigned int 32bit에서 4byte, 64bit에서 8byte 0 ~ 216 - 1, 0 ~ 232 - 1


잘 보면, unsigned 키워드를 붙여 0을 포함한 양수만을 사용할 수 있습니다. 또, int의 크기는 환경에 따라 다른데, 이는 int가 '실행되는 환경에서 가장 빠른 크기'로 정의되어 있기 때문입니다. 우리가 '32bit 컴퓨터', '64bit 컴퓨터' 하는 것은 '그 컴퓨터에서 명령어가 얼만큼의 길이를 갖는지'를 나타내는데, 레지스터의 크기에 맞지 않는 데이터를 처리하는 데는 이러한 데이터를 레지스터의 크기에 맞추는 과정이 필요하기 때문에 레지스터의 크기에 맞는 데이터, 즉 4byte 혹은 8byte의 데이터만이 그러한 과정 없이 빠르게 실행될 수 있습니다. 이 책에서는 주로 int을 사용할 것입니다. 한 가지 말해주자면, 64bit 컴퓨터라 할지라도 int가 8바이트인 환경은 거의 없습니다. 여러 이유가 있지만, 여기서는 그렇다는 것만 알아두세요. 가장 좋은 방법은 sizeof(int)를 통해 직접 확인하는 것입니다.

또, 소수점이 있는 수를 나타내기 위한 자료형인 실수 자료형도 있습니다.

float 4byte 16bit 정밀도
double 8byte 32bit 정밀도
long double 12byte 48bit 정밀도

 

이들 실수 자료형은 부동 소수점 방식을 사용합니다. 떠돌이 소수점이라는 말로도 부릅니다. 부동 소수점 방식은 일단 소수점이 어디에 있는지 상관없이 수를 적은 후, 나중에 소수점의 위치를 적는 방식입니다. 즉, 최대·최소 크기보다 최대 자릿수가 중요합니다.

나중에는 이 자료형들을 묶어 만든 구조체포인터★와 같은 유도 자료형들도 등장하나, 여기에서는 이만큼만 알아두도록 합시다.