📜  C/C++中long int和long long int的区别

📅  最后修改于: 2022-05-13 01:54:32.447000             🧑  作者: Mango

C/C++中long int和long long int的区别

所有变量在声明期间都使用数据类型来限制要存储的数据类型。因此,我们可以说数据类型是用来告诉变量它可以存储的数据类型。每当在 C++ 中定义变量时,编译器都会根据声明它的数据类型为该变量分配一些内存。不同的数据类型需要不同的内存量。

整数:用于整数数据类型的关键字是 int。整数通常需要 4 个字节的内存空间,范围从-21474836482147483647

数据类型修饰符:顾名思义,数据类型修饰符与内置数据类型一起使用来修改特定数据类型可以容纳的数据长度。

以下是 32 位 GCC 编译器的范围列表以及内存要求和格式说明符。



S. No. 

Data Type

Memory

(bytes)

Range

1int4-2^15 to 2^15 – 1
2Long int4-2^31 to 2^31 – 1
3Long long int8-2^63 to 2^63 – 1

与 long 相比,long long 需要双倍内存。但它在不同的系统上也可能不同。其范围取决于应用类型。不同数据类型的保证最小可用位大小:

  • 字符: 8
  • 短: 16
  • 整数: 16
  • 长: 32
  • 长长: 64

降序为: long long >=long>=int>=short>=char

方案一:



在各种竞争性编码平台中,约束在10 710 18 之间。下面是理解这个概念的程序:

C++
// C++ program to implement
// the above approach
#include 
using namespace std;
  
// Driver code
int main()
{
    // Value of p 10^5
    int p = 100000;
  
    // Value of q 10^5
    int q = 100000;
  
    int result = p * q;
    cout << result << endl;
    return 0;
}


C++
// C++ program to implement
// the above approach
#include 
using namespace std;
  
// Driver code
int main()
{
    // Value of p 10^5
    int p = 100000;
  
    // Value of q 10^5
    int q = 100000;
  
    long long int result = p * q;
    cout << result << endl;
    return 0;
}


C++
// C++ program to implement
// the above approach
#include 
using namespace std;
  
// Driver code
int main()
{
    // Value of p 10^5
    int p = 100000;
  
    // Value of q 10^5
    int q = 100000;
  
    long long int result = (long long int)p * q;
    cout << result << endl;
    return 0;
}


输出:
1410065408

如上所述,输出不正确,因为 int 不能存储10 10值(超出其范围)。在这种情况下,应使用 long long。

方案二:

下面是演示如何将 int 转换为 long long 影响输出的 C++ 程序:

C++

// C++ program to implement
// the above approach
#include 
using namespace std;
  
// Driver code
int main()
{
    // Value of p 10^5
    int p = 100000;
  
    // Value of q 10^5
    int q = 100000;
  
    long long int result = p * q;
    cout << result << endl;
    return 0;
}
输出:
1410065408

说明:即使在将 int 转换为 long long int 之后,上面的程序也会给出相同的输出,因为一开始,结果被声明为 long long。但是在给p和q的乘法赋值之前,就已经溢出了。现在,为了防止溢出情况,需要在分配结果值之前将 int 结果转换为 long long int,以免出现溢出情况。

方案三:

下面是实现上述方法的 C++ 程序:

C++

// C++ program to implement
// the above approach
#include 
using namespace std;
  
// Driver code
int main()
{
    // Value of p 10^5
    int p = 100000;
  
    // Value of q 10^5
    int q = 100000;
  
    long long int result = (long long int)p * q;
    cout << result << endl;
    return 0;
}
输出:
10000000000

说明:在此之后,它给出了正确的输出,即10 10 ,它可以很容易地存储到 long long 数据类型中,因为范围可达10 18

想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解语言和 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程