长长和长有什么区别

What's the difference between long long and long

本文关键字:区别 什么      更新时间:2023-10-16

long-long和long之间有什么区别?它们都不适用于12位数字(600851475143),我忘了什么了吗?

#include <iostream>
using namespace std;
int main(){
  long long a = 600851475143;
}

按照标准,所有保证都是:

  • int必须至少为16位
  • long必须至少为32位
  • long long必须至少为64位

在主要的32位平台上:

  • int为32位
  • long也是32位
  • long long为64位

在主要的64位平台上:

  • int为32位
  • long是32位或64位
  • long long也是64位

如果您需要特定应用程序的特定整数大小,而不是相信编译器来选择您想要的大小,#include <stdint.h>(或<cstdint>),这样您就可以使用以下类型:

  • int8_tuint8_t
  • int16_tuint16_t
  • int32_tuint32_t
  • int64_tuint64_t

您可能还对#include <stddef.h>(或<cstddef>):感兴趣

  • size_t
  • ptrdiff_t

long long不存在于C++98/C++03中,但存在于C99和C++0x中。

保证CCD_ 25至少为32位。

CCD_ 26被保证至少64位。

详细介绍@ildjarn的评论:

它们都不适用于12位数字(600851475143),我忘了什么了吗?

编译器查看文字值600851475143,而不考虑分配给它/初始化它的变量。您已经将其写成int类型的文字,但它不适合int

使用600851475143LL获取long long类型的文字。

您的C++编译器支持long-long,即C99标准中保证至少为64位(这是C标准,而不是C++标准)。请参阅Visual C++头文件以获取系统上的范围。

建议

对于新程序,建议只使用bool、char、int和double,直到出现需要其他类型之一的情况为止。

http://www.somacon.com/p111.php

取决于您的编译器。long-leng是64位,应处理12位数字。在您的情况下,它似乎只是认为它很长,因此不处理12位数字。