在cplusplus.com上,我看到的是数据类型 atomic_int_fastN_t ,atomic_int_leastN_t其中N可以是8,16,32和64。那么,最小和快速单词在它们中的含义是什么?或它们之间的区别是什么?即atomic_int_fast64_t与at atomic_int_least64_t和atomic<int64_t>有何区别?
同样的原则也适用于以非原子类型定义:std::int_least64_t,std::int_fast32_t等等。
“最少n个 ”类型是那些大小至少为n位的类型。如果实现不支持恰好n位的类型,则可能会更多。
“快速ñ ”类型是那些大小至少ñ位,并与他们一起工作,不需要额外的操作的处理器(即同他们一起工作是快)。
例如,在32位计算机上,可能支持16位整数,但是必须将其提升为32位整数以进行算术运算,并在计算完成后再次将其截断。在这样的机器上,std::int_least16_t它将是16位整数,但std::int_fast16_t将是32位整数,因为这是可以快速使用的。
std::int64_t然后保证typedef 恰好是 64位(并且仅在实现支持这种整数的情况下才存在)。