작은숲:위키노트/초보자를 위한 C 언어 강의/어떤 자료형을 쓸 것인가
C 언어에서는 상당히 많은 데이터 형을 지원한다. 그래서 어떤 데이터 형을 사용할 것인가는 처음 C 언어를 접하는 분들에게는 조금은 어려운 문제이기도 하다. C 언어는 기본적으로 모든 데이터 형의 크기를 정해놓지는 않았다 . 즉, 그 말은 컴파일러에 따라, 시스템에 따라 같은 데이터 형이라고 하더라도 크기가 달라진다는 것이다. 데이터 형의 크기라는 것은 그 데이터 형을 가지고 표현할 수 있는 수의 범위와 직결된다. 예를 들어, 1바이트로 표현할 수 있는 수는 28, 최대 256개이다. 그럼, 정수형, 문자형, 실수형 데이터 형 중에 어떤 것을 사용할 것인가를 간단히 짚어보도록 하자. 일반적으로 정수형 변수는 int 형을 주로 사용한다. 특별히 상당히 큰 정수를 저장해야 하는 경우에는 long 형을 사용하면 된다. 이것은 int 형의 범위를 넘어서는 정수를 int 형 변수에 저장하게 되면 overflow가 발생하여 데이터가 손실되기 때문이다. 상당히 많은 수의 정수형 변수를 사용해야 하는 경우는 아무래도 int 형보다는 short 형이 나을 것이다. int 형의 큰 배열을 잡는 경우가 대표적인 예이다. 저장할 정수의 값이 short 형의 범위를 넘어서지 않는 경우라면 short 형을 사용하는게 메모리를 절약할 수 있다는 측면에서 보면 이익이다. 이런 경우, 즉 반드시 long 형이나 short 형을 사용해야 하는 경우가 아니라면 그냥 int 형을 사용하는 게 무난하다. 문자형의 경우는 일반적으로 char 형을 사용하면 된다. 만약 unsigned char 형을 사용할 때에는 항상 주의해야 한다. unsigned 형이란 부호 없는 데이터 형이다. 즉, 항상 양수만 존재하게 되는 것이다. 그런데, EOF 문자의 경우는 음수 값을 가진다. 즉, unsigned char 형에 저장할 수 없다. 경우에 따라서는 큰 문제가 될 수도 있다. 꼭 부호 없는 데이터 형을 사용해야 할 때가 아니라면, 부호 있는 데이터 형을 사용하는 것이 좋다. 실수형의 경우 보통 double 형을 자주 사용한다. 실수형 상수가 double 형의 데이터 형을 갖기 때문에 형변환 없이 변수에 저장시킬 수 있어 double 형을 많이 쓴다. 하지만, 정수형의 경우에서와 같이 많은 변수를 선언하는 경우나 실수형의 큰 배열을 사용하는 경우는 float 형이 쓰는 것도 좋다. 어떤 데이터형을 쓸 것인가는 그 상황에 적절하게 맞춰 사용하면 된다. 그렇지만, 일반적으로 특별히 데이터 형을 따지지 않는다면 char, int, double 형을 사용하면 된다. 그리고, 꼭 부호 없는 데이터 형을 써야 할 경우가 아니라면 부호 있는 데이터형을 사용하는 것이 정신 건강에 좋다. 만약 부호 없는 데이터 형을 써야 한다면 그 변수에 음수가 저장되지 않도록 신경 써야 한다. 이를 신경 쓰지 않을 경우 쉽게 찾기 어려운 버그를 만들어낼 수도 있다. 그리고, C 언어에서는 컴파일러와 시스템에 상관 없이 다음의 규칙을 따른다.
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)또, unsigned int 형이나 short int, long int 형의 경우 뒤에 나오는 int를 생략하고 unsigned, short, long으로만 쓰기도 한다.