C/C++中long int和long long int之间的区别
在声明变量时,所有的变量都使用数据类型以限制存储的数据类型。因此,我们可以说数据类型用于告诉变量它可以存储的数据的类型。每当在C++中定义变量时,编译器会基于定义的数据类型为该变量分配一些内存。不同的数据类型需要不同数量的内存。
整数: 用于整数数据类型的关键词是int。整数通常需要4个字节的存储空间,范围是 -2147483648 到 2147483647 。
数据类型修饰符: 顾名思义,数据类型修饰符用于内置数据类型以修改特定数据类型可以保存的数据的长度。
下面是在32位GCC编译器上列出的不同范围以及所需内存和格式说明符的列表。
编号 | 数据类型 | 内存(bytes) | 范围 |
---|---|---|---|
1 | int | 4 | -2^31 to 2^31- 1 |
2 | 长整型 | 4 | -2^31 to 2^31 – 1 |
3 | 长长整型 | 8 | -2^63 to 2^63 – 1 |
相比long,long long需要双倍的内存。但在不同的系统上可能不同。它的范围取决于应用程序的类型。不同数据类型的最小可用位数保证如下:
- 字符: 8
- 短: 16
- 整数: 16
- 长: 32
- 长长: 64
降序如下: 长长>=长>=整数>=短>=字符
程序1:
在各种竞技编程平台上,约束条件在 **10 7 ** 到 **10 18 ** 之间。以下是理解该概念的程序:
输出:
如上所述,输出不正确,因为int不能存储 10 10 (超出其范围)。在这种情况下,应使用long long。
程序2:
以下是C++程序,演示将int转换为long long会如何影响输出:
输出:
说明: 将 int 转换为 long long int 后,上面的程序给出相同的输出,因为结果首先被声明为 long long。 但在分配 p 和 q 的乘积值之前,它已经溢出了。 现在,为了防止溢出情况,需要在分配结果值之前将 int 结果转换为 long long int,以避免发生溢出情况。
程序 3:
下面是实现上述方法的 C++ 程序:
输出:
说明: 此后,它给出正确的输出,即 **10 10 ** ,可以轻松地存储在 long long 数据类型中,因为其范围高达 **10 18 ** 。