가능한 중복 :
Does the size of an int depend on the compiler and/or processor?크기
정수의 크기가 컴파일러 나 OS 또는 프로세서에 의존 하는가? 32 비트 OS 또는 64 비트 OS (이 경우 64 비트 OS 만)에서 실행중인 32 비트 OS 또는 64 비트 OS 모두에서 gcc를 사용하면 어떻게 될까요?
가능한 중복 :
Does the size of an int depend on the compiler and/or processor?크기
정수의 크기가 컴파일러 나 OS 또는 프로세서에 의존 하는가? 32 비트 OS 또는 64 비트 OS (이 경우 64 비트 OS 만)에서 실행중인 32 비트 OS 또는 64 비트 OS 모두에서 gcc를 사용하면 어떻게 될까요?
시스템에 따라 다릅니다. 그리고 시스템이란 프로세서와 운영 체제의 모든 조합을 의미하지만 일반적으로 사용중인 프로세서의 "자연"정수 크기에 바인딩됩니다.
'int' 64 비트 인텔 시스템에서. 세 가지 주요 OS 인 Windows, Linux 및 OS X에서 int는 여전히 32 비트이지만 레지스터 크기는 64 비트입니다. 그러나'long int'의 크기는이 플랫폼에서 다릅니다. –
int, long 등의 크기는 컴파일러에 따라 다르지만 컴파일러 구현자는 특정 프로세서 및/또는 OS에 가장 적합한 크기를 선택합니다.
크기가 int
이고 거의 모든 다른 유형이 C에서 정의됩니다. 특정의 컴파일러는 특정의 플랫폼상에서 보증을 실시 할 수 있습니다 만, 이것은 구현에 따라서 다릅니다. 절대 의존하지 않아도됩니다.
이것은 어리석은 의미 지점 일 수 있지만 C에서 'int'의 크기는 * undefined *가 아닌 * 구현 정의 *입니다. 구현 정의는 구현이 선택과 일치해야하고 선택을 문서화해야 함을 의미하지만 undefined는 모든 베팅이 해제되고 컴파일러가 일관성없고 임의적으로 결정할 수 있음을 의미합니다. – templatetypedef
정수의 크기는 컴파일러, OS 또는 프로세서에서 나타 납니까?
예. 그것은 그러한 것들에 의존 할 수 있습니다.
실제로 컴파일러와 런타임 라이브러리에 의해 설정되는 플랫폼 ABI에 의해 정의되지만 컴파일러는 다른 OS 또는 아키텍처에서 다른 ABI를 사용합니다.
이 조합에 따라 컴파일러, 프로세서 및 OS
예를 들어 64 비트 Intel CPU의 경우 64 비트 모드에서 Windows의 long int
크기는 4 바이트이고 Linux 및 Mac의 경우 8 바이트입니다. int
은 Intel의 세 OS 모두에서 4 바이트입니다.
컴파일러 구현 자도 선택의 여지가 있지만 대개 OS가 사용하는 것을 사용합니다. 그러나 세 플랫폼 모두에서 C 컴파일러를 사용하는 컴파일러 공급 업체가이 세 가지 모두에서 동일한 크기를 사용하기로 결정할 수 있습니다.
물론 int
을 16 비트 CPU에서 4 바이트 (가능할 수도 있음)로 만드는 것은 의미가 없습니다.
그래서 세 가지 모두에 달려 있습니다.
http://stackoverflow.com/questions/2331751/does-the-size-of-an-int-depend-on-the-compiler-and-or-processor/2331835#2331835 –