Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C 및 C++에서 "긴" 데이터 유형이 필요합니까?

<시간/>

C 또는 C++에는 정수 유형 데이터에 사용되는 네 가지 다른 데이터 유형이 있습니다. 이 네 가지 데이터 유형은 short, int, long 및 long long입니다. 이러한 각 데이터 유형은 서로 다른 메모리 공간을 사용합니다. 크기는 아키텍처와 운영 체제에 따라 다릅니다. 때때로 int는 4바이트를 사용하거나 때로는 2바이트를 사용합니다. 이것은 컴파일러에서도 발생합니다. 그래서 우리는 크로스 컴파일러를 사용할 수 있습니다.

크로스 컴파일러는 기본적으로 현재 플랫폼 이외의 플랫폼에 대해 컴파일할 수 있는 컴파일러입니다.

따라서 32비트 시스템과 64비트 시스템에서 다음 코드를 컴파일하려는 경우 다른 출력이 생성됩니다.

예시

#include<stdio.h>
int main() {
   printf("Size of int : %ld Bytes\n", sizeof(int));
   printf("Size of long : %ld Bytes\n", 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

출력

Size of int : 4 Bytes
Size of long : 8 Bytes
Size of long long : 8 Bytes

따라서 이 예제에서 우리는 긴 데이터 유형이 컴파일러에 따라 다르다는 것을 쉽게 이해할 수 있습니다. 그렇다면 그 이유는 무엇입니까?

CPU는 메모리 주소 레지스터(MAR)의 주소를 제공하여 기본 메모리(RAM)에서 데이터를 호출합니다. 위치를 찾으면 메모리 버퍼 레지스터(MBR)로 전송됩니다. 데이터는 추가 사용을 위해 CPU 레지스터에 저장됩니다. 따라서 데이터 버스의 크기는 CPU 레지스터의 크기를 결정합니다. 32비트 시스템의 경우 한 번에 4바이트 데이터만 호출할 수 있습니다. 데이터가 32비트보다 크면 두 사이클이 걸립니다. 따라서 더 작은 데이터의 경우에는 아무런 차이가 없습니다.