c++ - 什么是 uint_fast32_t,为什么要使用它来代替常规的 int 和 uint32_t?

标签 c++ c types

所以 typedef:ed 原始数据类型的原因是抽象低级表示并使其更容易理解 (uint64_t 而不是 long long 类型,即 8 个字节)。

但是,有 uint_fast32_tuint32_t 具有相同的 typedef。使用“快速”版本会使程序更快吗?

最佳答案

  • int 在某些平台上可能只有 16 位。这可能不足以满足您的应用需求。
  • uint32_t 不保证存在。它是一个可选的 typedef ,如果它具有正好 32 位的无符号整数类型,则实现必须提供它。例如,有些有 9 位字节,因此它们没有 uint32_t
  • uint_fast32_t 清楚地说明了您的意图:它是一种至少 32 位的类型,从性能的角度来看是最好的。 uint_fast32_t 实际上可能是 64 位长。这取决于实现。
  • 还有uint_least32_t。它指定至少 32 位长的 最小 类型,因此它可以小于 uint_fast32_t。如果平台不支持后者,它是 uint32_t 的替代方案。

... there is uint_fast32_t which has the same typedef as uint32_t ...

你看到的不是标准。这是一个特定的实现(黑莓)。所以你不能从那里推断出 uint_fast32_t 总是与 uint32_t 相同。

另见:

关于c++ - 什么是 uint_fast32_t,为什么要使用它来代替常规的 int 和 uint32_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8500677/

相关文章:

c - SunRPC 启用单向消息传递(流/批处理?)

c - OpenGL+GLFW glGenVertexArrays 返回 GL_INVALID_OPERATION

string - Delphi XE3 : What are the new types, MarshaledString 和 MarshaledAString 有何用途?

java - Java 中一维数组的元素必须是原始数据类型吗?

c++ - std::bit_cast 与 std::array

c++ - 关于如何使用英特尔的集成性能原语评估 openCV 的建议?

c++ - 读取文本文件并将数据存储到多个数组 C++

c - pread 和 pwrite 未定义?

c++ - 为什么 boost::ptr_list 使用底层 void *?

java - `String.class` 和 `new Class[]{String.class}` 有什么区别?