programing

64 비트 컴퓨터에서 sizeof (int)는 얼마입니까?

nasanasas 2020. 11. 20. 09:01
반응형

64 비트 컴퓨터에서 sizeof (int)는 얼마입니까?


중복 가능성 :
int, long 등
의 크기 int의 크기는 컴파일러 및 / 또는 프로세서에 따라 달라 집니까?
정수의 크기를 결정하는 것은 무엇입니까?

64-bit기계를 사용하고 있습니다.

$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$ 

다음 프로그램을 실행했을 때 sizeof(int)as 4-bytes.

#include <stdio.h>

int main(void)
{
    printf("sizeof(int) = %d bytes\n", (int) sizeof(int));

    return 0;
}

나는 실행 해요 경우 16-, 32-64-비트 컴퓨터를, 다음은의 크기는 것을 의미하지 않는다 integer이다 16-, 32-64-비트 각각?

내 컴퓨터에서 나는 발견 WORD_BIT이다 32. 기계 64있어야하지 64-bit않습니까?

$ getconf WORD_BIT
32
$ 

그리고 위의 경우 에는 sizeof(int)be 64-bits( 8 bytes) 가 아니어야 합니까?


그럴 필요는 없습니다. "64 비트 머신"은 많은 것을 의미 할 수 있지만 일반적으로 CPU가 그렇게 큰 레지스터를 가지고 있음을 의미합니다. 유형의 크기는 컴파일러에 의해 결정되며, 실제 하드웨어와 관련이있을 필요는 없습니다 (일반적으로는 그렇습니다). 실제로 동일한 시스템의 다른 컴파일러는 이들에 대해 다른 값을 가질 수 있습니다.


포인터의 크기는 64 비트 C / C ++ 컴파일러에서 8 바이트 여야하지만 반드시 int 크기는 아닙니다.


별로. 이전 버전과의 호환성을 위해 32 비트입니다.
64 비트를 원하는 경우 long, size_t또는int64_t


C ++에서는의 크기 int가 명시 적으로 지정되지 않습니다. 최소한의 크기 이상 short int이어야하며, 최소한 signed char. charsizeof (char)가 1로 정의되어 있지만 in bits 의 크기도 명시 적으로 지정되지 않습니다. 64 비트 int를 원하는 경우 C ++ 11은 long long64 비트 이상을 지정 합니다.

참고 URL : https://stackoverflow.com/questions/10197242/what-should-be-the-sizeofint-on-a-64-bit-machine

반응형