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 位,则需要两个周期。因此,对于较小的数据,它没有任何区别。

更新于:2019年7月30日

114 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告