C/C++ 中是否有自然数的基本类型
Is there a fundamental type for natural numbers in C/C++?
我有一个问题,我需要将一些变量声明为自然数。哪个是我应该用于应该是自然数的变量的 propper 基本类型?喜欢整数是整数...
以下类型类似于C++中包含 0 的自然数集:
-
unsigned char
-
unsigned short int
-
unsigned int
-
unsigned long int
-
unsigned long long int
,自C++11以来。
每个值在可以表示的值范围内都不同。
请注意,计算机(甚至整个宇宙)是一台有限的机器;它的比特有限(但非常多)(我的笔记本电脑可能只有不到 1015 位)。
当然int
不是数学整数。在我的机器上,int
是一个 32 位有符号整数(long
是一个 64 位有符号整数),所以 int
-s 只有 232 个可能的值(这比数学整数的无限基数要少得多)。
因此,计算机只能表示一组有限的数字,但可以表示相当大的数字集。这比无限组自然数要小(记住,其中一些在整个地球上是不可表示的;阅读理查德悖论)。
你可能想使用unsigned
(与unsigned int
相同,在我的机器上表示最多 232-1 的自然数)、unsigned long
、unsigned long long
或(来自<stdint.h>
)类型,如 uint32_t
、uint64_t
...你会得到 32 位或 64 位的无符号二进制数。一些编译器和实现可能知道uint128_t
或类似的东西。
如果这还不够,请考虑使用大整数。你可以使用像GMPlib这样的库(但即使是一台大型计算机也无法表示非常大的自然数 - 以及它们的所有位-...,你自己的大脑也无法理解它们)。
如果您需要不能为负数的数字,最好的选择是 unsigned int
。如果您想了解有关数据类型的更多信息,可以查看此站点
没有任何表示自然数的特定数据类型。但是,您可以将数据类型用于整数,然后进行一些适当的编辑。以下是声明整数的几种方法:
- unsigned short int
- unsigned int
- unsigned long int
- unsigned long long int
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 构造函数正在调用一个使用当前类类型的函数
- 我应该使用什么来代替void作为变体中的替代类型之一
- C/C++ 中是否有自然数的基本类型