long是Java中的关键字,表示Long数据类型。 long数据类型是64位二进制补码整数,其中:
- 大小:64位
- 值:-2 63至2 63 -1。
64位GCC编译器的输出大小为8,而在32位GCC编译器上,大小为4。因此,随编译器的不同而不同。现在的问题是,这里到底发生了什么?让我们以编译器如何在内部分配内存的方式来讨论它。
CPU通过将位置的地址提供给MAR(内存地址寄存器)来从RAM调用数据。找到该位置并将数据传输到MDR(存储器数据寄存器)。此数据记录在处理器中的一个寄存器中,以进行进一步处理。因此,数据总线的大小决定了处理器中寄存器的大小。现在,一个32位寄存器一次只能调用4个字节大小的数据。而且,如果数据大小超过32位,则需要两个读取周期才能将数据放入其中。与64位相比,这会降低32位计算机的速度,后者只能在一个获取周期内完成操作。因此,显然,对于较小的数据,如果我的处理器的时钟速度相同,则没有任何区别。编译器旨在为目标机器体系结构生成最有效的代码。
注意:有趣的是,由于C99标准已经提供了它们的替换(int,long long),因此我们不需要“ long”数据类型。
在下面的程序中,定义了所有可能的具有长数据类型的变量,并使用sizeof()运算符计算并打印了它们的大小。
下面是找到long关键字演示工作的C程序:
// C program to demonstrate the working
// of long keyword
#include
int main()
{
long longType;
int integerType;
long int longIntegerType;
long long int longLongIntegerType;
float floatType;
double doubleType;
long double longDoubleType;
// Calculate and Print the size of all variables
printf("Size of longType is: %ld\n",
sizeof(longType));
printf("Size of integerType is: %ld\n",
sizeof(integerType));
printf("Size of longIntegerType is: %ld\n",
sizeof(longIntegerType));
printf("Size of longLongIntegerType is: %ld\n",
sizeof(longLongIntegerType));
printf("Size of floatType is: %ld\n",
sizeof(floatType));
printf("Size of doubleType is: %ld\n",
sizeof(doubleType));
printf("Size of longDoubleType is: %ld\n",
sizeof(longDoubleType));
return 0;
}
输出:
Size of longType is: 8
Size of integerType is: 4
Size of longIntegerType is: 8
Size of longLongIntegerType is: 8
Size of floatType is: 4
Size of doubleType is: 8
Size of longDoubleType is: 16
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。