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 位,则需要两个周期。因此,对于较小的数据,它没有任何区别。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP