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

Hik*_*aki 24 c++ int long-integer

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

#include <iostream>
using namespace std;

int main(){
  long long a = 600851475143;
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*ams 47

在主要的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

  • @Hikari Iwasaki:这取决于目标.例如,如果您在Windows上进行编译,则可能是32位,而在Linux x86-64上,它可能是64位.类型不会在运行时更改大小. (3认同)
  • “long 是 32 位或 64 位”是什么意思?它可以改变它的位吗? (2认同)
  • g++ 甚至有一个 `__int128` 类型,来扩展列表...... (2认同)

Che*_*Alf 7

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

long 保证至少32位.

long long 保证至少64位.


Kar*_*tel 5

详细说明@ildjarn的评论:

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

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

用于600851475143LL获取long long键入的文字。