类型atomic_int_fastN_t和atomic_int_leastN_t有什么区别

rah*_*til 2 c++ c++11

cplusplus.com上,我看到的是数据类型 atomic_int_fastN_tatomic_int_leastN_t其中N可以是8,16,32和64。那么,最小和快速单词在它们中的含义是什么?或它们之间的区别是什么?即atomic_int_fast64_t与at atomic_int_least64_tatomic<int64_t>有何区别?

Rei*_*ica 5

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

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

“快速ñ ”类型是那些大小至少ñ位,与他们一起工作,不需要额外的操作的处理器(即同他们一起工作是快)。

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

std::int64_t然后保证typedef 恰好是 64位(并且仅在实现支持这种整数的情况下才存在)。