C/C++中有自然数的基本类型吗?
Is there a fundamental type for natural numbers in C/C++?
我遇到一个问题,我需要将一些变量声明为自然数。对于应该是自然数的变量,我应该使用哪种正确的基本类型?就像整数一样是 int ...
如果您需要不能为负数的数字,最好的选择是 unsigned int
。如果你想了解更多关于数据类型的知识,你可以查看this site
以下类型类似于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 可能的值(这远小于数学整数的无限基数)。
所以一台计算机只能表示一组有限的数字,但数量相当大。这比无限的自然数集要小(请记住,其中一些不能在整个地球上表示;阅读 Richard's paradox)。
您可能想使用 unsigned
(与 unsigned int
相同,在我的机器上表示最大为 232-1 的自然数),unsigned long
、unsigned long long
或(来自 <stdint.h>
)类型如 uint32_t
、uint64_t
... 你会得到 32 位或 64 位的无符号二进制数。一些编译器和实现可能知道 uint128_t
或类似的东西。
如果这还不够,请考虑使用 big ints. You could use a library like GMPlib(但即使是大型计算机也无法表示非常大的自然数 - 及其所有位 -...,您自己的大脑无法理解它们都没有)。
没有任何特定的数据类型表示自然数。但是您可以对整数使用数据类型,然后进行一些适当的编辑。以下是声明整数的几种方法:
- unsigned short int
- unsigned int
- unsigned long int
- unsigned long long int
我遇到一个问题,我需要将一些变量声明为自然数。对于应该是自然数的变量,我应该使用哪种正确的基本类型?就像整数一样是 int ...
如果您需要不能为负数的数字,最好的选择是 unsigned int
。如果你想了解更多关于数据类型的知识,你可以查看this site
以下类型类似于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 可能的值(这远小于数学整数的无限基数)。
所以一台计算机只能表示一组有限的数字,但数量相当大。这比无限的自然数集要小(请记住,其中一些不能在整个地球上表示;阅读 Richard's paradox)。
您可能想使用 unsigned
(与 unsigned int
相同,在我的机器上表示最大为 232-1 的自然数),unsigned long
、unsigned long long
或(来自 <stdint.h>
)类型如 uint32_t
、uint64_t
... 你会得到 32 位或 64 位的无符号二进制数。一些编译器和实现可能知道 uint128_t
或类似的东西。
如果这还不够,请考虑使用 big ints. You could use a library like GMPlib(但即使是大型计算机也无法表示非常大的自然数 - 及其所有位 -...,您自己的大脑无法理解它们都没有)。
没有任何特定的数据类型表示自然数。但是您可以对整数使用数据类型,然后进行一些适当的编辑。以下是声明整数的几种方法:
- unsigned short int
- unsigned int
- unsigned long int
- unsigned long long int