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

2009/01/02 02:00

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.asp ··· Bid%3D98

+- m * ne :: http://mkexdev.net/article/content.asp ··· Bid%3D99


덧붙임


사용자 삽입 이미지

이건 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; }

크리에이티브 커먼즈 라이센스
Creative Commons License

6l4ck3y3 0x08 과거의 글모음/내 머리 속의 노트 , , , , ,

Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
[로그인][오픈아이디란?]