본문 바로가기

카테고리 없음

C의 데이터 타입

C 프로그래밍 언어에서 데이터 타입은 변수에 저장될 수 있는 값의 유형을 지정합니다. C 언어는 여러 기본 데이터 타입을 제공하며, 사용자가 정의한 데이터 타입도 지원합니다. 다음은 C에서 사용되는 주요 데이터 타입입니다.

1. 기본 데이터 타입

a. 정수형 (Integer Types)

정수형 데이터 타입은 정수를 저장하는 데 사용됩니다. C에서는 크기와 범위가 다른 여러 정수형 타입을 제공합니다.

  • char: 문자형 데이터 타입. 1바이트 크기로 저장되며, 주로 문자 데이터를 저장하는 데 사용됩니다.
  • c
    코드 복사
    char c = 'A';
  • short: 짧은 정수형 데이터 타입. 일반적으로 2바이트 크기로 저장됩니다.
  • c
    코드 복사
    short s = 32767;
  • int: 기본 정수형 데이터 타입. 크기는 시스템에 따라 다르지만 일반적으로 4바이트 크기로 저장됩니다.
  • c
    코드 복사
    int i = 2147483647;
  • long: 긴 정수형 데이터 타입. 일반적으로 4바이트 또는 8바이트 크기로 저장됩니다.
  • c
    코드 복사
    long l = 9223372036854775807;
  • long long: 매우 긴 정수형 데이터 타입. 일반적으로 8바이트 크기로 저장됩니다.
  • c
    코드 복사
    long long ll = 9223372036854775807;

b. 부호 없는 정수형 (Unsigned Integer Types)

부호 없는 정수형 데이터 타입은 양의 정수를 저장하는 데 사용됩니다. 각 기본 정수형에 대해 부호 없는 버전이 존재합니다.

  • unsigned char: 부호 없는 문자형 데이터 타입.
  • c
    코드 복사
    unsigned char uc = 255;
  • unsigned short: 부호 없는 짧은 정수형 데이터 타입.
  • c
    코드 복사
    unsigned short us = 65535;
  • unsigned int: 부호 없는 기본 정수형 데이터 타입.
  • c
    코드 복사
    unsigned int ui = 4294967295;
  • unsigned long: 부호 없는 긴 정수형 데이터 타입.
  • c
    코드 복사
    unsigned long ul = 18446744073709551615U;
  • unsigned long long: 부호 없는 매우 긴 정수형 데이터 타입.
  • c
    코드 복사
    unsigned long long ull = 18446744073709551615ULL;

c. 실수형 (Floating-Point Types)

실수형 데이터 타입은 소수점을 포함한 실수를 저장하는 데 사용됩니다.

  • float: 단정밀도 실수형 데이터 타입. 일반적으로 4바이트 크기로 저장됩니다.
  • c
    코드 복사
    float f = 3.14f;
  • double: 배정밀도 실수형 데이터 타입. 일반적으로 8바이트 크기로 저장됩니다.
  • c
    코드 복사
    double d = 3.141592653589793;
  • long double: 확장 배정밀도 실수형 데이터 타입. 일반적으로 12바이트 또는 16바이트 크기로 저장됩니다.
  • c
    코드 복사
    long double ld = 3.14159265358979323846264338327950288L;

2. 파생 데이터 타입 (Derived Data Types)

a. 배열 (Array)

배열은 동일한 데이터 타입의 요소를 순차적으로 저장하는 자료구조입니다.

c
코드 복사
int arr[5] = {1, 2, 3, 4, 5};

b. 구조체 (Structure)

구조체는 서로 다른 데이터 타입을 하나의 이름으로 묶어서 사용할 수 있게 해줍니다.

c
코드 복사
struct Point { int x; int y; }; struct Point p = {10, 20};

c. 공용체 (Union)

공용체는 여러 데이터 타입을 한 번에 하나만 저장할 수 있는 자료구조입니다.

c
코드 복사
union Data { int i; float f; char str[20]; }; union Data data; data.i = 10;

d. 열거형 (Enumeration)

열거형은 정수형 상수에 이름을 부여하여 코드의 가독성을 높여줍니다.

c
코드 복사
enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; enum Weekday today = Wednesday;

e. 포인터 (Pointer)

포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다.

c
코드 복사
int a = 10; int *p = &a;

3. 타입 한정자 (Type Qualifiers)

a. const

const 한정자는 변수의 값을 변경할 수 없도록 합니다.

c
코드 복사
const int x = 10;

b. volatile

volatile 한정자는 컴파일러에게 변수의 값을 최적화하지 말 것을 지시합니다. 하드웨어 장치와 같은 외부 요인에 의해 값이 변경될 수 있는 변수를 나타냅니다.

c
코드 복사
volatile int v;

c. restrict

restrict 한정자는 포인터가 가리키는 메모리가 유일하게 접근되는 메모리 영역임을 나타냅니다.

c
코드 복사
int *restrict p;

4. 크기와 범위

데이터 타입크기 (바이트)범위

char 1 -128 ~ 127 (부호 있는) / 0 ~ 255 (부호 없는)
short 2 -32,768 ~ 32,767
int 4 -2,147,483,648 ~ 2,147,483,647
long 4 또는 8 -2,147,483,648 ~ 2,147,483,647 (4바이트)
long long 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned char 1 0 ~ 255
unsigned short 2 0 ~ 65,535
unsigned int 4 0 ~ 4,294,967,295
unsigned long 4 또는 8 0 ~ 4,294,967,295 (4바이트)
unsigned long long 8 0 ~ 18,446,744,073,709,551,615
float 4 1.2E-38 ~ 3.4E+38
double 8 2.3E-308 ~ 1.7E+308
long double 12 또는 16 3.4E-4932 ~ 1.1E+4932

이 표는 데이터 타입의 크기와 범위를 요약한 것입니다. 데이터 타입의 크기와 범위는 시스템에 따라 달라질 수 있으며, 특히 int, long, long double과 같은 타입은 컴파일러와 아키텍처에 따라 차이가 있을 수 있습니다.

C 언어의 데이터 타입을 이해하는 것은 효율적이고 안전한 프로그래밍을 위해 중요합니다. 각 데이터 타입의 특징을 잘 이해하고 적절하게 사용하는 것이 좋은 프로그램을 작성하는 데 도움이 됩니다.