C++ C/C+中的自然数是否有基本类型+;?

C++ C/C+中的自然数是否有基本类型+;?,c++,c,variables,int,variable-declaration,C++,C,Variables,Int,Variable Declaration,我有一个问题,我需要将一些变量声明为自然数。哪一种是我应该用于自然数变量的基本类型?与整数类似的是int…如果需要不能为负数的数字,最好的选择是无符号int。如果您想了解有关数据类型的更多信息,可以检查以下类型类似于C++中包含的0的自然数集: 无符号字符 unsigned short int unsigned int unsigned long int 无符号长整型,自C++11以来 每一台计算机所能代表的数值范围各不相同。请注意,计算机(甚至整个宇宙)是一台有限的机器;它有一个有限的(但

我有一个问题,我需要将一些变量声明为自然数。哪一种是我应该用于自然数变量的基本类型?与整数类似的是int…

如果需要不能为负数的数字,最好的选择是
无符号int
。如果您想了解有关数据类型的更多信息,可以检查以下类型类似于C++中包含的0的自然数集:

  • 无符号字符
  • unsigned short int
  • unsigned int
  • unsigned long int
  • 无符号长整型
    ,自C++11以来
每一台计算机所能代表的数值范围各不相同。

请注意,计算机(甚至整个宇宙)是一台有限的机器;它有一个有限的(但非常大的数量)位(我的笔记本电脑可能少于1015位)

当然,
int
不是数学整数。在我的机器上,
int
是一个32位有符号整数(而
long
是一个64位有符号整数),因此
int
-s只有232个可能的值(这远远小于数学整数的无限基数)

所以一台计算机只能代表一组有限的数字,但却相当大。这比无限的自然数集合要小(记住,有些自然数无法在整个地球上表示;请阅读)

您可能希望使用
无符号
(与
无符号整数
相同,在我的机器上最多表示232-1的自然数),
无符号长
无符号长
或(来自
)类型,如
uint32\t
uint64\t
。。。您将得到32或64位的无符号二进制数。一些编译器和实现可能知道
uint128\t
或类似的内容


如果不够,请考虑使用。你可以使用像这样的库(但即使是一台大计算机也不能用所有的位来表示非常大的自然数,你自己的大脑也不能理解它们)。

一个无符号整数怎么样?高达21.47亿的所有自然数…@LukePark这是32位有符号
int
的范围(正负值)<代码>无符号将上限加倍,而下限为
0
。啊,是的。将最后一个值翻一番对不起,您实际要解决的问题是什么?在你的问题中提到它(因此你应该编辑你的问题)将有助于获得更相关的答案。也许这就是我想要的,但我已经看过很多关于
unsigned
vs
unsigned int
的讨论,我有一些疑问。@Skyp89什么“疑问”
unsigned
unsigned int
声明相同的内容。
int
是可选的/隐含的。(另外,
signed
signed int
和bare
int
都是等价的。)就我个人而言,在语义上,我使用
signed
unsigned
,只要我特别关心标识,如果它不相关(只有在调用其他人的函数时才会发生).
无符号字符
声明存储自然数的变量?为什么
char
char
不声明字符吗?