산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 데이터 타입 완전 정복: 정수, 실수, void, 파생 타입과 sizeof

C의 타입 시스템은 변수의 메모리 크기, 값의 범위, 비트 해석 방식을 결정합니다. 표준 타입부터 플랫폼 의존적 크기까지 체계적으로 정리합니다.

타입 분류 체계

정수 타입 상세

크기와 범위는 구현 정의(Implementation-defined)이며, <limits.h> 매크로로 확인 가능.

분류포함 타입설명
기본 타입정수형, 실수형산술 연산 가능, 하드웨어 직접 매핑
열거형enum명명된 정수 상수 집합
void 타입void값 없음, 미완성 타입
파생 타입포인터, 배열, 구조체, 공용체, 함수기본 타입으로부터 합성

고정 폭 정수 타입 (<stdint.h>, C99) - 권장

int8_t    int16_t    int32_t    int64_t    // 정확한 폭
uint8_t   uint16_t   uint32_t   uint64_t   // 부호 없는 정확한 폭
int_least8_t   int_fast8_t   // 최소/최속 폭
intptr_t  uintptr_t  // 포인터를 담을 수 있는 정수
intmax_t  uintmax_t  // 최대 폭 정수

크기 확인 프로그램

#include <stdio.h>
#include <limits.h>
#include <stdint.h>

int main() {
    printf("char: %zu byte, 범위: %d ~ %d\n", sizeof(char), CHAR_MIN, CHAR_MAX);
    printf("short: %zu byte, 범위: %d ~ %d\n", sizeof(short), SHRT_MIN, SHRT_MAX);
    printf("int: %zu byte, 범위: %d ~ %d\n", sizeof(int), INT_MIN, INT_MAX);
    printf("long: %zu byte, 범위: %ld ~ %ld\n", sizeof(long), LONG_MIN, LONG_MAX);
    printf("long long: %zu byte\n", sizeof(long long));
    printf("int32_t: %zu byte\n", sizeof(int32_t));
    printf("intptr_t: %zu byte (포인터 크기)\n", sizeof(intptr_t));
    return 0;
}

실수 타입 (부동소수점)

IEEE 754 표준 준수. <float.h> 매크로로 특성 확인.

타입최소 크기일반적 크기 (64비트)값 범위 (일반적)서식 지정자
signed char8비트1바이트-128 ~ 127%hhd
unsigned char8비트1바이트0 ~ 255%hhu
short / signed short16비트2바이트-32,768 ~ 32,767%hd
unsigned short16비트2바이트0 ~ 65,535%hu
int / signed int16비트4바이트-2,147,483,648 ~ 2,147,483,647%d
unsigned int16비트4바이트0 ~ 4,294,967,295%u
long / signed long32비트8바이트 (LP64) / 4바이트 (LLP64)-9.22e18 ~ 9.22e18 (64비트)%ld
unsigned long32비트8바이트 / 4바이트0 ~ 1.84e19 (64비트)%lu
long long (C99)64비트8바이트-9.22e18 ~ 9.22e18%lld
unsigned long long64비트8바이트0 ~ 1.84e19%llu
타입크기비트 구성범위 (대략)유효 숫자서식
float4바이트1부호 + 8지수 + 23가수±1.2e-38 ~ ±3.4e+38약 6~7자리%f %e %g
double8바이트1부호 + 11지수 + 52가수±2.3e-308 ~ ±1.7e+308약 15~16자리%lf %e %g
long double10/12/16바이트확장 정밀도 (구현 의존)±3.4e-4932 ~ ±1.1e+4932 (80비트)약 19자리+%Lf

실수 리터럴 접미사

3.14f     // float
3.14      // double (기본)
3.14L     // long double
1.23e-4   // 지수 표기 (double)
1.23e-4f  // float 지수

void 타입의 세 가지 용도

sizeof 연산자

int arr[10];
int *p = arr;
printf("%zu %zu\n", sizeof(arr), sizeof(p));  // 40 8 (64비트에서)

타입 변환 규칙

모범 사례

C 언어

  1. 전기 스위치 이해: 유형, 기능, 응용
  2. C# 변수와 기본 데이터 타입 완벽 가이드
  3. C++ 데이터 타입 이해하기: 기초, 수정자, 모범 사례
  4. C 데이터 타입 완벽 해설: int, float, char 등 완전 가이드
  5. 파이썬 데이터 타입 마스터하기: 실전 가이드
  6. Java 기본 데이터 타입: 8가지 타입 완벽 가이드와 예제
  7. C 변수, 데이터 타입, 상수 – 실전 가이드
  8. 데이터 센터 5대 모델 설명: 설계, 활용 사례, 사례
  9. 2021년 핵심 클라우드 컴퓨팅 모델 8가지
  10. 흔한 데이터 유출 유형 8가지 – 실제 사례 및 영향
용도예시설명
반환값 없음void func(void)함수가 값을 반환하지 않음
매개변수 없음int rand(void)함수가 인자를 받지 않음 (C에서 ()는 미지정)
범용 포인터void *ptr = malloc(100);타입 없는 주소, 임의 타입으로 캐스팅 가능