需要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

因此,从此示例中,我们可以轻松理解long数据类型与编译器有所不同。那么背后的原因是什么呢?

CPU通过提供内存地址寄存器(MAR)的地址从主内存(RAM)调用数据。找到该位置后,会将其传输到内存缓冲寄存器(MBR)。数据将存储到CPU寄存器中以供进一步使用。因此,数据总线的大小决定了CPU寄存器的大小。对于32位系统,它一次只能调用4字节数据。如果数据大于32位,则将花费两个周期。因此,对于较小的数据,它没有任何区别。