암호화프로그래밍/(Old)C-BIGINT(부록)

부록1. 각 언어의 자료형별 크기

산을좋아한라쯔 2013. 6. 19. 14:13
반응형

C, C++, Java의 자료형태에 따라 할당되는 메모리크기를 살펴보면 아래 표와 같다.

 

[자료크기 단위: Bytes]

자료형태   Standard C  C++(Windows 32bit) Java
 char  1  1 1
 short  2  2 2
 int  2 or 4  4 4
 long 4 4 8
 long long 8 8 -
 float 2 or 4 4 4
 double 4 or 8 8 8
 boolean 1 1 1

 

 

대표적인 자료형태만을 본 것인데, Java의 경우 char(1) < short(2) < int(3) < long (4) 처럼 규칙적으로 증가하여 명확한데 반해, 표준 C와 C++의 경우는 int에 대해 크기의 구분이 명확하지 않다. 실제로 CPU와 그에 따른 컴파일러에 따라 int가 2 Bytes인것도 있고, 4 Bytes인 것도 있다.

따라서, 특정 CPU에 대해 코딩을 할 때는, 혹은 CPU에 관계없이 동작되는 코딩을 하고자 할 때는, 컴파일러에서 결정하는 자료형의 크기에 따라 코딩이 좌우되지 않도록 할 필요가 있어, 다음과 같이 별도로 자료형을 정의하고 사용하는 경향이 많다.

 

typedef char u8;

typedef unsigned short u16;

typedef unsigned long u32;

typedef unsigned long long u64;

 

실제 코드내에서 특정 자료형의 크기를 알고자 할 때는 sizeof를 사용해서 알아낸다.

즉, 자료형 double이 몇 bytes의 메모리를 사용하는지 알아내는 것은, sizeof(double)을 통해서 알 수 있다.

 

 

반응형