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_t
和uint8_t
int16_t
和uint16_t
int32_t
和uint32_t
int64_t
和uint64_t
您可能对#include <stddef.h>
(或<cstddef>
)也有兴趣:
size_t
ptrdiff_t
[long long
在C ++ 98 / C ++ 03中不存在,但在C99和c ++ 0x中确实存在。
long
确保至少为32位。
long long
至少保证有64位。
详细阐述@ildjarn的评论:
而且它们都不使用12位数字(600851475143),我忘了什么吗?
编译器查看文字值600851475143
不考虑您为其分配/初始化变量的变量。您已将其编写为int
类型的文字,但它不适合int
。
使用600851475143LL
获得long long
类型的文字。
您的C ++编译器支持long long,在C99标准(即C标准,不是C ++标准)中,保证至少为64位。请参阅Visual C ++头文件以获取系统上的范围。
推荐
对于新程序,建议仅使用bool,char,int和double,直到出现需要其他类型之一的情况。
取决于您的编译器。long long是64位,应处理12位数字。看起来像您的情况,它只是考虑使用long,因此不处理12位数字。