atomic_int_fastN_t和atomic_int_leastN_t之间有什么区别?

5
cplusplus.com上,我看到了数据类型atomic_int_fastN_tatomic_int_leastN_t。其中N可以是8、16、32和64。那么least和fast在它们中表示什么含义或它们之间有何区别?即atomic_int_fast64_tatomic_int_least64_t以及atomic<int64_t>有何不同?
1个回答

9
同样的原则适用于非原子typedef:std::int_least64_tstd::int_fast32_t等。
“leastn”类型是大小至少为n位的类型。如果实现不支持恰好n位的类型,则可以更多。
“fastn”类型是大小至少为n位的类型,并且使用它们不需要处理器进行额外的操作(即使用它们快速)。
例如,在32位机器上,可能支持16位整数,但必须将它们提升为32位整数进行算术运算,然后再次截断计算完成后。在这样的机器上,std::int_least16_t将是16位整数,但std::int_fast16_t将是32位整数,因为这是快速处理的。
然后,typedef std::int64_t保证为恰好64位(仅在实现支持此类整数时才存在)。

1
最后一段提到了一个不太被重视的细节:在任何给定的平台上,"exact"类型(例如int32_t不能保证存在。只有"least"和"fast"类型是可以的。 - DevSolar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接