C, Cpp

C의 자료형 별 크기

흑조롱이 2023. 9. 12. 09:42

 

이번 글에서는 C언어에서 자주 사용하는 자료형들의 크기를 알아보겠습니다.

 

 

MS의 C++ 레퍼런스에서는 아래의 표처럼 자료형들의 크기를 정의하고 있습니다.

 

포인터 자료형의 크기는 여기를 참고했습니다.

 

 

 

type 크기 (bytes)
char 4
int 4
short 2
double 8
float 4
long long 8
long double 8
pointer 4 ~ 20
bool 1

 

 

 

위의 레퍼런스는 C++을 기준으로 작성한 것이니, C에서는 자료형들의 크기가 어떨 지 궁금해졌습니다.

 

C언어에서 자료형 각각의 크기를 알아보고자, 이를 출력하는 C코드를 직접 만들었습니다.

 

 

#include <stdio.h>
#include <stdbool.h>


int main(void)
{
    printf("Size of char:    %zu bytes \n", sizeof(char));     // 1 바이트

    printf("Size of int:     %zu bytes \n", sizeof(int));     // 4 바이트
    printf("Size of short:   %zu bytes \n", sizeof(short));   // 2 바이트
    printf("Size of double:  %zu bytes \n", sizeof(double));  // 8 바이트
    printf("Size of float:   %zu bytes \n", sizeof(float));   // 4 바이트

    printf("Size of long:        %zu bytes \n", sizeof(long));        // 4 바이트
    printf("Size of long long:   %zu bytes \n", sizeof(long long));   // 8 바이트
    printf("Size of long double: %zu bytes \n", sizeof(long double)); // 12 바이트
    printf("Size of void pointer: %zu bytes \n", sizeof(void*));      // 4 바이트
    printf("Size of int pointer: %zu bytes \n", sizeof(int*));        // 4 바이트
    printf("Size of bool: %zu bytes \n", sizeof(bool));        // 1 바이트

    return 0;
}

 

 

 

실행해본 결과는 아래와 같습니다.

 

 

실행 결과

 

 

 "long double"의 크기는 8바이트가 아닌 12바이트로 나오는 것을 알 수 있습니다.

 

이는 C언어와 C++의 차이로 인한 것으로 예상합니다.

 

 

 

+@) 오타/오류 지적 및 피드백은 언제나 환영합니다