c ++中最大的整数数据类型?

15 c++

哪个是c ++中最大的整数数据类型?

jal*_*alf 21

最大的标准 C++整数类型是long.

C有一个long long,C++ 0x也会添加它,当然你可以实现自己的自定义整数类型,甚至可能是BigInt类.

但从技术上讲,考虑到内置的整数类型,long是你的答案.

  • 现在我们知道了``long long`在C++ 11中. (8认同)
  • 你叫我*我是一个学究者.;)但是,公平点.目前,看起来它将被包含在C++ 0x中,但谁知道呢.:) (3认同)

Mic*_*val 9

long long数据类型是标准C99和C++ 0x中最大的内置积分数据类型.与所有其他整数数据类型一样,long long没有给出精确的字节大小.相反,它被定义为至少 64位整数.虽然long long它不是官方C++标准的一部分,但它在现代编译器中得到了普遍支持.但是请注意,对于现代的台式机很多编译定义long,并long long为两个完全相同的64位,而对于嵌入式处理器许多编译器定义long为32位和long long64位(显然难熬少数例外).

如果您需要更高的精度或绝对不能使用long long语言扩展,那么您将不得不使用一个旨在处理极大或极小数字的C或C++库.

  • 仅供参考,"long long"不符合C++标准.它被添加到C99的C中.目前,它是大多数编译器支持的无处不在的扩展. (10认同)
  • "......在大多数现代桌面CPU上,长期和长期都是64位." 不对.取决于编译器.在LLP64模型(由VC使用)中,`long`仍然是32位而`long long`是64位. (3认同)
  • long long是C++ 0x的一部分(或者我应该说C++ 1x,现在?),请参阅http://www.research.att.com/~bs/C++0xFAQ.html#long-long (2认同)
  • Pax,<climits>定义宏INT_MAX等.该标准定义了这些的最小值,有效地建立了内置整数类型表示所需的最小位数.int为16,long为32,新标准为64,长为64. (2认同)
  • 标准中的哪个地方表示"long long"**存在**?*它甚至不存在于C++*中.它是一个C数据类型,是的,它将被添加到C++ 0x中,但目前它在C++中不存在.-1 (2认同)

und*_*e_d 7

您可能更愿意通过映射到编译体系结构上的最大(完全实现)类型<cstdint>及其typedef intmax_t和来避免担心原始名称uintmax_t.

我很惊讶没有人说过这个,但粗略的研究表明它是在C++ 11中添加的,这可能解释了之前提到的缺乏.(虽然它的同胞新的原始/内置型long long 引用!)

有些编译器也可能提供更大的类型,但这些可能会有警告,例如:为什么在g ++中std :: intmax_t不是__int128_t?

就个人而言,我正在使用,cstdint因为它更容易快速查看我正在使用的最小字节数 - 而不是必须记住给定基元对应的位数 - 而标准意味着它避免了我的类型与平台相关.而且,就我所做的而言,uint8_t它比无尽unsigned char的更快更整洁!

编辑:事后看来,我想澄清一下:uint8_t不能保证等同于unsigned char.当然,它在我的机器上,它也可能适合你.但标准并不要求这种等同性; 看:当uint8_t≠unsigned char时?出于这个原因,现在当我需要标准定义的特殊能力时[[un]signed] char,我只使用它.


Dav*_*res 0

在 Borland 和 Microsoft 编译器中,__int64 可能是您可以获得的最大的。