C 和 C++ 中需要“long”数据类型吗?
在 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
因此,从这个例子中我们可以很容易地理解 long 数据类型因编译器而异。那么,其背后的原因是什么呢?
CPU 通过提供内存地址寄存器 (MAR) 的地址来从主内存 (RAM) 调用数据。找到位置后,将其传输到内存缓冲寄存器 (MBR)。数据存储到 CPU 寄存器中以供进一步使用。因此,数据总线的大小决定了 CPU 寄存器的尺寸。对于 32 位系统,它一次只能调用 4 字节的数据。如果数据大于 32 位,则需要两个周期。因此,对于较小的数据,它没有任何区别。
广告