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