C++:数据类型,何时使用?

标签 c++ windows visual-studio-2008

有人告诉我,当我想要 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/

相关文章:

c++ - SQLite SQLITE_BUSY[5] 击中析构函数并使用 :memory:

在 Wamp 窗口上具有类似 cron 功能的 php 脚本

windows - CloudFormation更改Windows计算机名称

c# - 有没有不需要安装的 Windows 盒子的好版本控制程序?

visual-studio - 从 Visual Studio 2008 中删除 SourceSafe 集成

c++ - 以编程方式使用 Windows 防火墙

c++ - 如何从 boost::posix_time::ptime 获取秒数

C++属性未声明的变量

c - 调试警告 : String is not null terminated. 知道它是什么吗?

c++ - 为什么 std::atomic<T>::operator= 应该返回一个值而不是引用?