C++ 什么';long和long的区别是什么

C++ 什么';long和long的区别是什么,c++,int,long-integer,C++,Int,Long Integer,long和long有什么区别?而且它们都不能使用12位数字(600851475143),我忘了什么吗 #include <iostream> using namespace std; int main(){ long long a = 600851475143; } #包括 使用名称空间std; int main(){ 长a=600851475143; } long在C++98/C++03中不存在,但在C99和C++0x中存在 long保证至少32位 代码>长long 保证至

long和long有什么区别?而且它们都不能使用12位数字(600851475143),我忘了什么吗

#include <iostream>
using namespace std;

int main(){
  long long a = 600851475143;
}
#包括
使用名称空间std;
int main(){
长a=600851475143;
}

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

long
保证至少32位


<>代码>长long <代码>保证至少64位。

您的C++编译器支持长long,保证在C99标准中至少64位(这是C标准,而不是C++标准)。查看VisualC++头文件,获取系统的范围。

推荐

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


按照标准,保证的是:

  • int
    必须至少为16位
  • long
    必须至少为32位
  • long-long
    必须至少为64位
在主要的32位平台上:

  • int
    是32位
  • long
    也是32位
  • long-long
    为64位
在主要的64位平台上:

  • int
    是32位
  • long
    为32位或64位
  • long-long
    也是64位
如果您需要特定应用程序的特定整数大小,而不是信任编译器来选择所需的大小,请包含(或),以便您可以使用以下类型:

  • int8\u t
    uint8\u t
  • int16\u t
    uint16\u t
  • int32\u t
    uint32\u t
  • int64\u t
    uint64\u t
您可能还对
#include
(或
)感兴趣:

  • size\u t
  • ptrdiff\u t

取决于您的编译器。long-long是64位,应该处理12位。在您的情况下,似乎只是考虑它的长度,因此不处理12位。

要详细说明@ildjarn的评论:

而且它们都不能使用12位数字(600851475143),我忘了什么吗

#include <iostream>
using namespace std;

int main(){
  long long a = 600851475143;
}
编译器查看文本值
600851475143
,而不考虑要分配给/初始化它的变量。您已将其编写为键入的
int
文本,它不适合
int


使用
600851475143LL
获取键入的
long
文本。

使
long a=600851475143LL应该可以。你说“long是32位还是64位”是什么意思?它能改变它的位置吗?@Hikari-Iwasaki:这取决于目标。例如,如果您在Windows上编译,它可能是32位,而在Linux x86-64上,它可能是64位。类型不会在运行时更改大小。