类型atomic_int_fastN_t和atomic_int_leastN_t之间的区别是什么

时间:2016-01-15 08:57:41

标签: c++ c++11

开启cplusplus.com我看到的数据类型atomic_int_fastN_tatomic_int_leastN_t,其中N可能是8,16,32和64.那么“最小和快速”字的含义是什么他们或他们有何不同?即atomic_int_fast64_tatomic_int_least64_tatomic<int64_t>的不同之处?

1 个答案:

答案 0 :(得分:4)

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

“最少 n ”类型是那些大小至少为 n 位的类型。如果实现不支持一种完全 n 位的话,可能会更多。

“fast n ”类型的大小至少为 n 位,使用它们不需要额外的操作处理器(即使用它们很快)。

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

然后,typedef std::int64_t保证完全 64位(并且只有在实现支持这样的整数时才存在)。