长期和长期有什么区别?而且他们都不能使用12位数字(600851475143),我忘记了什么?长长期和长期有什么区别
#include <iostream>
using namespace std;
int main(){
long long a = 600851475143;
}
长期和长期有什么区别?而且他们都不能使用12位数字(600851475143),我忘记了什么?长长期和长期有什么区别
#include <iostream>
using namespace std;
int main(){
long long a = 600851475143;
}
在主要32位平台:
int
为32位long
为32个比特以及long long
是64位在主要64位平台:
int
为32位long
或者是32或64位long long
为64位以及由标准状况:
int
必须至少16位long
必须至少有32位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是32位还是64位”是什么意思?它可以改变它的位? –
@岩崎岩崎:这取决于目标。例如,如果你在Windows上编译,它可能是32位,而在Linux x86-64上,它可能是64位。运行时类型不会更改大小。 –
long long
不C++ 98/C++ 03存在,但在C99确实存在和的C++ 0x。
long
保证至少32位。
long long
保证至少64位。
您的C++编译器支持很长的长度,保证在C99标准(这是C标准,而不是C++标准)中至少有64位。请参阅Visual C++头文件以获取系统上的范围。
建议
对于新方案,建议使用一个只布尔,焦炭,int和双,直到情况发生,其他类型中的一种需要。
取决于你compiler.long长为64位,应该处理12位数字。看起来就像在你的情况下,它只是考虑它很长,因此不处理12位数字。
为了详细说明@ ildjarn的评论:
,他们都不会用12位数字(600851475143),我是不是忘了什么工作?
编译器看字面意义600851475143
不考虑,你将其分配给/与初始化它的变量。你已经将它写成了int
类型文字,并且它不适合int
。
使用600851475143LL
得到一个long long
类型文字。
让那个'长长的a = 600851475143LL;'它应该可以工作。 – ildjarn
long long和long之间的区别很长。 –