如何找到枚举的范围?
我有两个版本,当最小值为负值时,状态有所不同.Stroustrup说,对于
enum e3 { min = -10 , max = 1000000 }; // range -1048576:1048575
但
C++ Primer Plus 5th Edition说
我很困惑哪个是正确的?
最佳答案
我相信两者都是正确的(不过,请参见下文的Primer定义),具体取决于您希望的兼容性。正式定义是
对于负数,问题是我们使用哪种表示形式。它的脚注说
如果假设符号大小或补码,则示例枚举的范围为-1048575:1048575
。对于二的补数,您将在负数范围内再得到一个。 Primer的定义缺少最大的枚举器值,因此我不确定下限-7
的含义。如果您想与其他实现最大程度地兼容,我将使用-1048575:1048575
。