본문 바로가기

프로그래밍 언어/C

C 언어 정수형 데이터 타입 정리: int, short, long, unsigned

C 언어 정수형 데이터 타입 정리: int, short, long, unsigned

C 언어에서 정수형(Integer Type) 데이터는 프로그램에서 수를 표현할 때 필수적인 요소입니다. 하지만 데이터 타입에 따라 크기, 표현 범위, 부호(Sign) 여부가 달라지기 때문에, 이를 정확히 이해하는 것이 중요합니다.

 

 

목차

  1. int: 기본 정수형
  2. short: 작은 크기의 정수형
  3. long: 큰 크기의 정수형
  4. unsigned: 부호 없는 정수형
  5. 정수형 데이터 타입 크기 비교
  6. 정수형 데이터 타입 사용 예제
  7. 정리 및 선택 가이드

 

1. int: 기본 정수형

int는 C 언어에서 가장 기본적인 정수형 데이터 타입입니다. 시스템 및 컴파일러에 따라 크기가 다를 수 있지만, 일반적으로 4바이트(32비트)를 차지합니다.

  • 기본 크기: 대부분의 시스템에서 4바이트 (32비트)
  • 표현 범위: -2,147,483,648 ~ 2,147,483,647 (부호 있는 경우)
  • 기본적으로 부호 있는 값(signed)으로 사용됨

예제 코드

#include <stdio.h>

int main() {
    int num = 100;
    printf("정수 값: %d\n", num);
    return 0;
}

 

 

 

2. short: 작은 크기의 정수형

short 타입은 정수형 데이터 중에서도 가장 작은 크기를 가지며, 메모리를 절약하면서도 작은 범위의 정수를 저장할 때 유용합니다. 주로 메모리가 제한적인 환경(예: 임베디드 시스템)에서 많이 사용됩니다.

특징

  • 기본 크기: 일반적으로 2바이트(16비트)
  • 부호 있는 경우 범위: -32,768 ~ 32,767
  • 부호 없는 경우 범위: 0 ~ 65,535
  • 일반적인 활용: 작은 숫자를 다루는 경우, 메모리 최적화 필요 시

예제 코드

#include <stdio.h>

int main() {
    short s = 32000;
    printf("short 타입의 값: %d\n", s);
    return 0;
}

위 예제에서 short 변수 s는 32,000을 저장하고 있습니다. 하지만 32,767을 초과하는 값을 할당하면 오버플로우가 발생할 수 있습니다.

 

 

 

3. long: 큰 크기의 정수형

long 타입은 기본 int보다 더 많은 데이터를 저장할 수 있도록 설계된 정수형 타입입니다. 큰 숫자를 다루는 프로그램(예: 파일 크기, 시간 계산 등)에서 유용하게 사용됩니다.

특징

  • 기본 크기: 최소 4바이트(32비트), 일부 시스템에서는 8바이트(64비트)
  • 부호 있는 경우 범위: (32비트) -2,147,483,648 ~ 2,147,483,647 / (64비트) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • 부호 없는 경우 범위: 해당 크기의 두 배
  • 일반적인 활용: 파일 크기, 시간 계산, 데이터베이스 인덱스

예제 코드

#include <stdio.h>

int main() {
    long largeNum = 1000000000L;
    printf("long 타입의 값: %ld\n", largeNum);
    return 0;
}

long 타입을 사용할 때는 "%ld" 서식 지정자를 사용하여 출력해야 합니다. 일부 시스템에서는 long8바이트(64비트)로 확장될 수 있으므로, 크기를 확인하는 것이 중요합니다.

 

 

 

4. unsigned: 부호 없는 정수형

unsigned 키워드는 정수형 데이터 타입 앞에 붙여 사용되며, 부호(음수)를 제거하고 양수만 표현할 수 있도록 해줍니다. 이를 통해 같은 크기의 메모리에서 더 큰 숫자를 표현할 수 있습니다.

특징

  • 기본적으로 0 이상의 정수만 저장
  • 사용 가능한 데이터 타입: unsigned short, unsigned int, unsigned long
  • 표현 범위 증가: 부호 있는 정수형의 두 배 범위를 표현 가능

예제 코드

#include <stdio.h>

int main() {
    unsigned int positiveNum = 4000000000;
    printf("unsigned int 값: %u\n", positiveNum);
    return 0;
}

부호가 없기 때문에 음수 값을 저장할 수 없습니다. 예를 들어, unsigned int에 -1을 저장하면 예상치 못한 값이 나올 수 있습니다.

 

 

 

 

5. 정수형 데이터 타입 크기 비교

아래 표는 일반적인 시스템에서의 정수형 크기와 표현 범위를 보여줍니다.

타입 크기 (바이트) 부호 있는 경우 범위 부호 없는 경우 범위
short 2 -32,768 ~ 32,767 0 ~ 65,535
int 4 -2,147,483,648 ~ 2,147,483,647 0 ~ 4,294,967,295
long 4 ~ 8 시스템에 따라 다름 시스템에 따라 다름

 

 

 

6. 정수형 데이터 타입 사용 예제

아래는 다양한 정수형 데이터를 활용하는 예제입니다.

#include <stdio.h>

int main() {
    short s = 100;
    int i = 1000;
    long l = 1000000;
    unsigned int u = 4000000000;

    printf("short: %d\n", s);
    printf("int: %d\n", i);
    printf("long: %ld\n", l);
    printf("unsigned int: %u\n", u);

    return 0;
}

 

 

 

7. 정리 및 선택 가이드

각 데이터 타입을 언제 사용하는 것이 좋을까요?

  • short: 작은 정수 저장 시 (메모리 절약 필요)
  • int: 일반적인 정수 연산
  • long: 더 큰 숫자를 다룰 때
  • unsigned: 음수를 허용하지 않을 때

데이터 타입을 적절히 선택하면 메모리 절약성능 최적화를 동시에 달성할 수 있습니다.