2011-08-19 3 views

답변

3

그들은 할 수 있습니다. C 표준은 정수 및 부동 소수점 유형에 대해 특정 최소 범위를 요구하지만 플랫폼에서 유형의 실제 크기를 결정할 자유가 많습니다.

예를 참조하십시오. limits.hfloat.h.

sizeof(char) == 1 
sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long) 

플랫폼은 일반적으로 하드웨어에 자연스러운 크기를 선택합니다

또한, 사실 필요가 정수 타입의 크기 사이의 엄격한 관계가있다. 예를 들어, int은 보통 기본 단어 크기 (예 : 32 비트 하드웨어에서 32 비트)를 갖습니다.

부동 소수점 유형의 경우 유사성이 적습니다. 대부분의 플랫폼은 다소 IEEE 754과 호환됩니다.

+2

수정 : 'long'과 'long long'은 같은 크기 일 수 있습니다 ('long'이 64 비트 인 경우). 엄밀히 말하면, 요구 사항은 크기가 아닌 유형의 범위 *에 있습니다. int가 long보다 더 많은 패딩 비트를 가지고 있다면 충분히 미친 시스템은 int보다 길 수 있습니다. –

+0

@ 키스 : 오타가 수정되었습니다 - 감사합니다! 미친 시스템에 관해서는, 당신이 그들을 부르면, 그것은 잘 받아 들여지는 점이지만, 그것이 학문적 인 점이되기를 바란다. 나는 결코 그것을 결코 현실에서 볼 수 없을 것이다. –

1

확실히. 이것은 32 비트 시스템 포인터에 대한 질문에 함축되어 있습니다. 32 비트는 보통 64 비트 시스템에서 8 바이트 인 4 바이트입니다.

+1

@ paxdiablo : Jens가 "일반적으로"사용하는 이유는 그 때문일 것입니다. –

관련 문제