长期和长期之间有什么区别

时间:2011-06-24 01:35:45

标签: c++ int long-integer

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

#include <iostream>
using namespace std;

int main(){
  long long a = 600851475143;
}

5 个答案:

答案 0 :(得分:44)

在主要的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_tuint8_t
  • int16_tuint16_t
  • int32_tuint32_t
  • int64_tuint64_t

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

  • size_t
  • ptrdiff_t

答案 1 :(得分:7)

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

long保证至少32位。

long long保证至少64位。

答案 2 :(得分:2)

详细说明@ ildjarn的评论:

  

他们都不能使用12位数字(600851475143),我忘记了什么吗?

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

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

答案 3 :(得分:0)

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

建议

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

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

答案 4 :(得分:0)

取决于你的编译器。长是64位,应该处理12位数。看起来像你的情况只是考虑它很长,因此不处理12位数。