본문 바로가기
lang/C,C++

[C] 자료형, 변수, 배열 등의 크기를 알아봅시다.

by Wordbe 2019. 10. 11.
728x90

우선 기본 자료형 크기부터 정리합니다.

자료형

byte

계산

범위

비고

char

1byte

8bit = 2^8 = 256

-128~127

 

bool

1byte

 

0~1

 

int

4byte

32bit = 2^32 = 4E9

-2,147,483,648~2,147,483,647

2,147,483,647 = 0x7fffffff

 

long

4byte

32bit = 2^32 = 4E9

-2,147,483,648~2,147,483,647

64bit에서 8byte

long long

8byte

64bit = 2^64 = 1E19

-9,223,372,036,854,775,808~9,223,372,036,854,775,807

 

__int64

8byte

64bit = 2^64 = 1E19

-9,223,372,036,854,775,808~9,223,372,036,854,775,807

 

float

4byte

 

3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)

 

double

8byte

 

1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)

 

 

sizeof 함수는 변수나 자료형의 크기를 반환합니다.

직접 코드를 보며 확인하시면 이해하시기 빠를 것 같습니다.

#include <stdio.h>
#include <stdlib.h>


void about_sizeof_function(){
    long long b[5];
    printf("%ld\n", sizeof b); // 5elements x 8bytes = 40

    printf("total size(%ld), \
            array size(%ld), \
            array size(%ld), \
            each element size(%ld)\n",
                            sizeof(b), // 40
                            sizeof(b) / sizeof(long long), // 40 / 8 = 5
                            sizeof(b) / sizeof(b[0]), // 40 / 8 = 5
                            sizeof(b[0])); // 8bytes (= sizeof(long long))

    int a[10][3];
    printf("%ld\n", sizeof a); // (10 x 3) elements x 4bytes = 120

    printf("total size(%ld), \
            array size(%ld), \
            row size(%ld), \
            column size(%ld), \
            each element size(%ld)\n", 
                            sizeof(a), // 120
                            sizeof(a) / sizeof(int), // 120 / 4 = 30
                            sizeof(a) / sizeof(a[0]), // 120/ (3x4) = 10
                            sizeof(a[0]) / sizeof(int), // (3x4) / 4 = 3
                            sizeof(a[0][0]) ); // 4 (= sizeof(int))
}

int main() {
    about_sizeof_function();


    return 0;
}

 

 

728x90

댓글