回答
__int128
__uint128
__int128未在Microsoft Visual上启用 – 2013-06-28 07:53:02
@BrendanWebster您可以启用它吗? – 2015-08-26 20:03:09
没有,但你可以像使用GMP库来处理更大的数字。
有一个海湾合作委员会extension for 128 bit integers。
注意:'intmax_t'不考虑它http://stackoverflow.com/questions/21265462/why-in-g-stdintmax-t-is-not-a-int128-t – 2015-05-19 16:45:23
你可以检查出BigInt有类... http://sourceforge.net/projects/cpp-bigint/
(还有许多其他BigInts有...)
根据您的需要是什么,你可以创建自己的结构来处理数据类型:
#include <cstdint>
struct uint256_t
{
std::uint64_t bits[4];
};
uint256_t x;
总结...
如果你需要存储,将不适合确切的整数值在'long long'中,gcc提供__int128这个类型。 这是一个gcc扩展,不是标准C++的一部分(截至撰写本文)。
如果您需要使用更大的精确整数值,则可能需要arbitrary-precision arithmetic package,如GMP。如果您的需求非常有限,您可以推出自己的扩展精度代码,但与使用现有库相比,它可能会变得更加复杂(且效率更低,可靠性更高)。
如果你需要存储较大的数字,但并不需要准确保存较大的值,可以使用浮动或双:这些能代表更大的幅度的数字,但较少precision。
和当然,如果你只是想占用更多的内存,声明数组;-)
有一种可能性是使用'streampos ',取决于所需的大小? – jorgen 2014-02-05 19:10:24
标准
扩展整型明确由C和C++标准允许的。
C++ 11
C++11 N3337 draft 3.9.1 “基本类型” 第3段说:
有五种标准符号整型:“符号字符”,“短整型”, “int”,“long int”和“long long int”。在这个列表中,每种类型至少提供与列表中前面那些相同的存储空间。也可能有实现定义的扩展有符号整数类型。标准和扩展的有符号整数类型统称为有符号整数类型。 Plain int具有执行环境体系结构所建议的自然大小,其他带符号整数类型则用于满足特殊需求。
你也应该考虑intmax_t
,其中18.4.1“头大纲”第2款说:
头定义的所有功能,类型和宏一样在C标准7.18。
C99
C99 N1256 draft明确允许他们在6.2.5 “类型” 第4段:
有五种标准符号整数类型,指定为符号的字符,短整型,诠释,long int和long long int。 (这些以及其他类型可能是 ,如6.7.2所述)。也可能有实现定义的扩展有符号整数类型.28)标准和扩展有符号整数类型统称为有符号整数类型。 29)
和7.18.1.5“最大宽度的整数类型”第1段表示:
下列类型指定能够表示任何符号整数类型的任何值的带符号的整数类型:
intmax_t
如果你知道你的号码始终将是积极的,你可以通过标记它作为unsigned
int myNum; // Range is from –2,147,483,648 to 2,147,483,647
unsigned int myNum; // Range is from 0 to 4,294,967,295
- 1. C++`long long`变量类型
- 2. 联盟为unsigned long long int类型投
- 3. unsigned long long int
- 4. 在SQLite中是否存在Long类型?
- 5. 主键类型:int vs long
- 6. C++ int与long
- 7. 从long long int中减去int int
- 8. unsigned long long VS unsigned long long int
- 9. Arduino long long int doc
- 10. long double vs long int
- 11. long long int在windowsxp和windows7
- 12. 什么是Java类型long long
- 13. 类型“long long”总是64位?
- 14. tgamma()long long类型转换
- 15. 如何将long long int的数字放入long long int数组中
- 16. “unsigned long int类型”和“无符号长long int型的收入分配问题
- 17. 对int int long long的警告
- 18. 不能转换的boost ::拉姆达:: ...为long long unsigned int类型
- 19. C long long golang
- 20. long long int和long double的区别是什么?
- 21. 从int转换为long long
- 22. 为什么不是common_type <long,unsigned long> :: type = long long?
- 23. C中的64位数据类型(long long)的按位运算?
- 24. 格式指定类型'无符号long long',但参数的类型为'unsigned int'
- 25. Arrays.copyOfRange(byte [],long,long)?在Java中
- 26. C++ long long issues
- 27. 划分long long类型的变量以获得百分比?
- 28. C++转换的int * LONG
- 29. 在C中,'long unsigned'与'unsigned long'一样有效吗?
- 30. C++ unsigned long类型和<
你说的是什么类型的扩展一个
int
的范围是什么?整型或任何类型?这种情况下“更大”是什么:范围或大小?在任何情况下,输入'int [100]'最有可能比'long long'大很多,但我不认为这是你所问的。澄清你的问题。目前这没什么意义。 – AnT 2011-03-21 18:25:40你可以尝试很久很久(我只是在开玩笑)我相信在所有体系结构中,long long是最大的64位 – 2011-03-21 18:25:47
@Jesus Ramos:至少有64位(可能更大)。 @AndreyT:不是正式的,但它是一个几乎无处不在的扩展,我们也期望在标准的下一版本中看到(使我们符合C)。 – 2011-03-21 19:04:31