jal*_*alf 21
最大的标准 C++整数类型是long.
C有一个long long,C++ 0x也会添加它,当然你可以实现自己的自定义整数类型,甚至可能是BigInt类.
但从技术上讲,考虑到内置的整数类型,long是你的答案.
该long long数据类型是标准C99和C++ 0x中最大的内置积分数据类型.与所有其他整数数据类型一样,long long没有给出精确的字节大小.相反,它被定义为至少 64位整数.虽然long long它不是官方C++标准的一部分,但它在现代编译器中得到了普遍支持.但是请注意,对于现代的台式机很多编译定义long,并long long为两个完全相同的64位,而对于嵌入式处理器许多编译器定义long为32位和long long64位(显然难熬少数例外).
如果您需要更高的精度或绝对不能使用long long语言扩展,那么您将不得不使用一个旨在处理极大或极小数字的C或C++库.
您可能更愿意通过映射到编译体系结构上的最大(完全实现)类型<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,我只使用它.