如何找到枚举的范围?
我有两个版本,当最小值为负值时,状态有所不同.Stroustrup说,对于

 enum e3 { min = -10 , max = 1000000 }; // range -1048576:1048575


C++ Primer Plus 5th Edition说



我很困惑哪个是正确的?

最佳答案

我相信两者都是正确的(不过,请参见下文的Primer定义),具体取决于您希望的兼容性。正式定义是



对于负数,问题是我们使用哪种表示形式。它的脚注说



如果假设符号大小或补码,则示例枚举的范围为-1048575:1048575。对于二的补数,您将在负数范围内再得到一个。 Primer的定义缺少最大的枚举器值,因此我不确定下限-7的含义。如果您想与其他实现最大程度地兼容,我将使用-1048575:1048575

08-08 04:01