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)
배열은 동일한 데이터 타입의 요소를 순차적으로 저장하는 자료구조입니다.
b. 구조체 (Structure)
구조체는 서로 다른 데이터 타입을 하나의 이름으로 묶어서 사용할 수 있게 해줍니다.
c. 공용체 (Union)
공용체는 여러 데이터 타입을 한 번에 하나만 저장할 수 있는 자료구조입니다.
d. 열거형 (Enumeration)
열거형은 정수형 상수에 이름을 부여하여 코드의 가독성을 높여줍니다.
e. 포인터 (Pointer)
포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다.
3. 타입 한정자 (Type Qualifiers)
a. const
const 한정자는 변수의 값을 변경할 수 없도록 합니다.
b. volatile
volatile 한정자는 컴파일러에게 변수의 값을 최적화하지 말 것을 지시합니다. 하드웨어 장치와 같은 외부 요인에 의해 값이 변경될 수 있는 변수를 나타냅니다.
c. restrict
restrict 한정자는 포인터가 가리키는 메모리가 유일하게 접근되는 메모리 영역임을 나타냅니다.
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 언어의 데이터 타입을 이해하는 것은 효율적이고 안전한 프로그래밍을 위해 중요합니다. 각 데이터 타입의 특징을 잘 이해하고 적절하게 사용하는 것이 좋은 프로그램을 작성하는 데 도움이 됩니다.