c++ - atomic_int_fastN_t 和 atomic_int_leastN_t 类型之间有什么区别

标签 c++ c++11

关于 cplusplus.com我看到的数据类型是什么atomic_int_fastN_tatomic_int_leastN_t其中 N 可以是 8、16、32 和 64。那么它们中 least 和 fast 一词的含义是什么,或者它们有何不同?即如何 atomic_int_fast64_t不同于 atomic_int_least64_tatomic<int64_t>

最佳答案

同样的原则适用于非原子类型定义:std::int_least64_tstd::int_fast32_t

“最少n”类型是那些大小至少为 n 位的类型。如果实现不支持恰好 n 位的类型,则可能更多。

“快速n”类型是那些大小至少为 n 位的类型,并且使用它们不需要额外的操作处理器(即与它们一起工作很快)。

例如,在 32 位机器上,可能支持 16 位整数,但必须将它们提升为 32 位整数才能进行算术运算,并在计算完成后再次截断。在这样的机器上,std::int_least16_t 将是 16 位整数,但 std::int_fast16_t 将是 32 位整数,因为这是快速一起工作。

typedef std::int64_t 保证正好 64 位(并且只有在实现支持这样的整数时才会存在)。

关于c++ - atomic_int_fastN_t 和 atomic_int_leastN_t 类型之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34807415/

相关文章:

c++ - 在 Visual Studio 2008 监 window 口中调试 C++ 虚拟多重继承

c++ - CreateProecssAsUser 提升权限?

algorithm - 使用内置的 sort() 函数而不是复杂度始终为 nlogn 的合并排序是最佳实践吗

C++ 11 move 语义

c++ - std::make_unique 和 std::unique_ptr 与 new 的区别

c++11 - 什么样的迭代器支持随机访问但不支持 C++ 中的连续存储?

c++ - 在复制构造函数中复制原子的非锁定方式

c++ - 如何使用类型特征使这种数组到指针的转换明确?

c# - 我们应该把枚举放在哪里?

c++ - 在 while 循环中执行操作,直到调用组合键 C++