C :: gcc 컴파일러에서 자료형의 크기는 얼마?

C언어로 sizeof() 함수를 이용하여 구해봤습니다. 환경은 32 bit 입니다.


사용자 삽입 이미지

대체로 Visual C++의 자료형 크기와 동일한 값이 나옵니다. 다만, long double 형의 크기가 더 크게 나왔습니다. Visual C++에서는 double와 동일하게(실제로는 지원하지 않는거죠) 8 byte 이지만, Monodevelop에서는 12 byte 입니다. 터보 C가 10 byte 인데, 범위가 3.4*10-4932 ~ 1.1*104932 이라고 하네요. 우와! 그럼, 12 byte 이면? 시간 내서 어느 정도의 범위를 표현할 수 있는지 구해봐야겠습니다.


결론적으로, Monodevelop이 컴파일러로 gcc를 사용하니까 이 결과는 gcc의 결과라고 봐도 되겠지요?


참고 문헌

자료형 :: http://www.cworldlab.com/CandCplus/c/c-11.htm

실수 데이터의 표현 방식 :: http://mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=9&ID=98

+- m * ne :: http://mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=9&ID=99


덧붙임


사용자 삽입 이미지

이건 Code Blocks에서 돌린 결과입니다. Monodevelop의 결과와 같은 걸 보니 역시 원인은 gcc 컴파일러이네요. 당연한 거 아니냐구요? 전 그 당연한 걸 여태 몰랐다는… 부끄.


알고보니 C/C++ 컴파일러 종류도 많더라구요. 기본적인 gcc와 Visual C++에서 쓰이는 Intel 컴파일러 외에도 여러 가지 있더군요. 이제서야 이런 걸 알게 되다니 공부 열심히 해야겠습니다. 아래는 이번에 쓰인 코드입니다.


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


int main(void)

{
    printf("char            : %d byte \n", sizeof(char));
    printf("signed char     : %d byte \n", sizeof(signed char));
    printf("unsigned char   : %d byte \n", sizeof(unsigned char));
    printf("short           : %d byte \n", sizeof(short));
    printf("unsigned short  : %d byte \n", sizeof(unsigned short));
    printf("int             : %d byte \n", sizeof(int));
    printf("unsigned int    : %d byte \n", sizeof(unsigned int));
    printf("long            : %d byte \n", sizeof(long));
    printf("unsigned long   : %d byte \n", sizeof(unsigned long));
    printf("float           : %d byte \n", sizeof(float));
    printf("double          : %d byte \n", sizeof(double));
    printf("long double     : %d byte \n", sizeof(long double));


    return 0;
}

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다