long long和long有什么区别?它们在处理12位数(600851475143)时都无法正常工作,我是否忘记了什么?
#include <iostream>
using namespace std;
int main(){
long long a = 600851475143;
}
long long和long有什么区别?它们在处理12位数(600851475143)时都无法正常工作,我是否忘记了什么?
#include <iostream>
using namespace std;
int main(){
long long a = 600851475143;
}
int
至少占用16位long
至少占用32位long long
至少占用64位int
占用32位long
也占用32位long long
占用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
__int128
类型来扩展列表... - Alexis Wilkelong long
在C++98/C++03中不存在,但是在C99和c++0x中存在。
long
至少保证32位。
long long
至少保证64位。
你的C++编译器支持long long,这在C99标准中保证至少为64位(这是C标准,而不是C++标准)。请参见Visual C++头文件以获取系统上的范围。
建议
对于新程序,建议仅使用bool、char、int和double,直到需要使用其他类型的情况出现。
这取决于你的编译器。long long 是 64 位,应该可以处理 12 位数字。看起来在你的情况下它只是将其视为 long,因此无法处理 12 位数字。
long long a = 600851475143LL;
修改为这样,它就能运行。 - ildjarn