很长的C++

Jos*_*ega 2 c++ types

我正在创建一个游戏引擎,它将支持Microsoft Windows X86和X64版本.当我创建自定义typedef时,如果版本是X86则必须指定"typedef unsigned long long",当版本是X64时,是否必须指定"typedef unsigned long"?

Vin*_*ura 8

#include <cstdint>
Run Code Online (Sandbox Code Playgroud)

和使用uint32_t,uint64_t等等.

  • @jsvcycling:这不是外部参考; 它是_standard_库.这就像说"std :: vector"或"size_t"是"外部参考". (3认同)
  • 这是个坏主意。真的,真的,真的...使用&lt;cstdint&gt;。如果您定义自己的类型,则会导致其他人阅读您的代码,并且一旦您决定移植到不同的平台,您就会遇到麻烦。 (2认同)

Ros*_*ith 5

在支持它的所有编译器上,long long类型是64位.(C/C++标准说它必须至少为64位;我认为还没有任何系统支持更大的类型.)如果你只想要64位整数typedef,你可以使用long long而不用担心.

C99和C++ 11标准提供了一个新的头文件<stdint.h>或<cstdint>,它已经有一组固定大小的typedef,所以你可以使用uint64_t.Visual Studio 2010支持这一点,但我不认为VS2008会这样做.

C和C++标准仅指定标准整数类型的最小大小:

  • char被指定为至少8位
  • short被指定为至少16位
  • int指定为至少16位
  • long指定为至少32位
  • long long指定为至少64位

  • 你在"实践中"是什么意思?在现代DSP中,`char`通常是32位.在16位处理器上,`int`是16位.你的答案是严重的桌面偏见. (2认同)