C 또는 C++에는 정수형 데이터에 대한 네 가지 데이터 유형이 있습니다. 4가지 데이터 유형은 short, int, long, long long입니다. 각 데이터 유형은 서로 다른 메모리 공간을 차지합니다. 크기는 아키텍처와 운영 체제에 따라 다릅니다. int에는 4바이트가 필요한 경우도 있고 2바이트가 필요한 경우도 있습니다. 이것은 컴파일러에서도 발생합니다. 그래서 우리는 크로스 컴파일러를 사용할 수 있습니다.
크로스 컴파일러는 기본적으로 현재 플랫폼이 아닌 다른 플랫폼에서도 컴파일이 가능한 컴파일러입니다.
따라서 다음 코드를 32비트 시스템과 64비트 시스템에서 컴파일하면 다른 출력이 생성됩니다.
#include<stdio.h> int main() { printf("Size of int : %ld Bytes</p><p>", sizeof(int)); printf("Size of long : %ld Bytes</p><p>", sizeof(long)); printf("Size of long long : %ld Bytes", sizeof(long long)); }
Size of int : 4 Bytes Size of long : 4 Bytes Size of long long : 8 Bytes
이 예제를 통해 우리는 긴 데이터 유형이 컴파일러마다 다르다는 것을 쉽게 이해할 수 있습니다. 그렇다면 그 이유는 무엇입니까?
CPU는 MAR(메모리 주소 레지스터)의 주소를 제공하여 주 메모리(RAM)의 데이터를 호출합니다. 위치를 찾으면 메모리 버퍼 레지스터(MBR)로 전송됩니다. 데이터는 추가 사용을 위해 CPU 레지스터에 저장됩니다. 따라서 데이터 버스의 크기에 따라 CPU 레지스터의 크기가 결정됩니다. 32비트 시스템의 경우 한 번에 4바이트의 데이터만 호출할 수 있습니다. 데이터가 32비트보다 크면 2사이클이 필요합니다. 따라서 더 작은 데이터의 경우 차이가 없습니다.
위 내용은 C 언어에는 긴 정수 데이터 유형이 필요합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!