IT/C C++

[C/C++] 자료형의 크기 및 표현 범위

크몽 '경매하는 개발자' 님의 경매/부동산/IT/사업 채널 2022. 6. 9. 23:11
반응형

[C/C++] 자료형의 크기 및 표현 범위

반응형

 


 

구분 자료형 Byte 범위
기본형 void 1 -
문자형 (signed) char - %c 1 -128 ~ 127
unsigned char - %c 1 0 ~ 255
wchar_t - %c 2 0 ~ 65,535
정수형 bool - %d 1 0 ~ 1
(signed) short (int) - %d 2 -32,768 ~ 32,767
unsigned short (int) - %d 2 0 ~ 65,535
(signed) int - %d 4
8
32bit OS : -2^31 ~ 2^31 - 1
64bit OS : -2^63 ~ 2^63 - 1
unsigned int - %d 4
8
32bit OS : 0 ~ 2^32
64bit OS : 0 ~ 2^64
(signed) long (int) - %d 4 -2,147,483,648 ~ 2,147,483,647 
unsigned long (int) - %d 4 0 ~ 4,294,967,295
__int8 -%lld 1 -128 ~ 127
__int16 - %lld 2 -32,768 ~ 32,767
__int32 - %lld 4 -2,147,483,648 ~ 2,147,483,647
__int64 - %lld 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float - %f 4 -3.4*10^38 ~ 3.4*10^38
(long) double - %f 8 -1.79*10^308 ~ 1.79*10^308
열거형 enum - %d 2 -32,768 ~ 32,767

+) int와 long의 차이점

반응형

 

 c언어에서 int와 long은 크기나 부호 여부가 동일하며 따라서 표현할 수 있는 수의 범위도

완전히 동일한 것처럼 보입니다. 그렇지만 어밀히 말하면 다른타입입니다.

 C언어의 타입 정의에 int형은 "CPU의 레지스터와 동일한 크기를 가지는 타입"으로 정의되어

있습니다. 레지스터란 CPU내의 임시 기억 장소이며 레지스터의 크기에 따라 CPU의 비트수를

정의합니다. 즉, 레지스터가 16비트이면 16비트 컴퓨터, 32비트이면 32비트 컴퓨터라고 부릅니다.

 

 즉, int형은 CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의되어 있으며 그래서 int형의

실제 크기는 플랫폼에 따라 달라집니다. 32비트 운영체제에서 int는 32비트이며, 64비트는

int형이 64비트(8바이트)가 될 것입니다.

 

 반면 long형은 그 크기가 4바이트로 고정되어 있어 어떤 플랫폼에서나 4바이트입니다.

따라서 int와 long이 동일한 크기를 가지는 것은 32비트 플랫폼에서 뿐이며

16비트에서는 다른 타입이고 64비트에서도 달라질 것입니다.

 


+) 열거형 변수 enum 사용법

열거형 변수 enum은 리스트를 열거하고 첫번째 열거 변수에 초기값을 정의해주면, 그 이후로 열거되는 변수에 맞는 항목이 +1 되서 정수형으로 값을 리턴하는 변수이다. 아래 예시를 보면 이해가 잘 될 것이다.

반응형

 

#include <stdio.h>

enum DayOfWeek {    // 열거형 정의
    Sunday = 0,         // 초기값 할당
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

int main()
{
    enum DayOfWeek week;    // 열거형 변수 선언

    week = Tuesday;    // 열거형 값 할당

    printf("%d\n", week);   // 2: Tuesday의 값 출력

    return 0;
}

 

출력결과 : 2

반응형