有人告诉我,当我想要 32 位 unsigned int
时,我应该始终使用 size_t
,我不太明白为什么,但我认为它有一些东西如果有人在 16 位或 64 位机器上编译程序,那么 unsigned int
将变为 16 位或 64 位,但 size_t
不会,但为什么不呢?以及如何强制位大小达到我想要的大小?
那么,何时使用哪种数据类型的列表在哪里?例如,是否有 size_t
替代 unsigned short
?还是 32 位 int
?等等。我如何才能确保我的数据类型具有与我最初选择的一样多的位数,而无需担心其他机器上的不同位数?
大多数情况下,我更关心使用的内存,而不是将内存使用量加倍所带来的边际速度提升,因为我的 RAM 不多。所以我不想再担心如果我的程序是在不是 32 位的机器上编译的,一切都会崩溃。现在,当我希望它是 32 位时,我总是使用 size_t
,但是对于 short
,我不知道该怎么做。有人帮我理清头绪。
另一方面:如果我需要 64 位大小的变量,我可以在 32 位机器上成功使用它吗?该数据类型名称是什么(如果我希望它始终为 64 位)?
最佳答案
size_t
用于存储对象大小。它的大小恰好适合该用途,而且仅适用于该用途——在 32 位系统上为 4 个字节,在 64 位系统上为 8 个字节。您不应将它与 unsigned int
或任何其他数据类型混淆。它可能等同于 unsigned int
或者可能不取决于实现(包括系统位数)。
一旦您需要存储对象大小以外的内容,您就不应该使用 size_t
,而应该使用其他数据类型。
关于C++:数据类型,何时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023503/