根据§7.2/ 5和§7.2/ 6不应该code below打印1 1
而不是4 4
?代码不应该打印“1 1”而不是“4 4”?
#include <iostream>
enum A { a = (char)1, b, c }; // underlying type is not fixed
int main() {
std::cout << sizeof(a) << ' ' << sizeof(A) << '\n';
}
编辑
从§7.2/ 5:
如果底层类型是不固定的,每个枚举的类型是 其初始化值的类型:
- 如果为枚举器指定了初始值设定项,则初始值 的值与表达式的类型相同并且常数表达式 应该是积分常数表达式(5.19)。
这两个子句都没有说明基础类型必须尽可能小。 –
@OliCharlesworth查看我的编辑 –
我认为“继enum-specifier的大括号后,每个枚举器都有其枚举类型。”从§7.2/ 5也适用于具有非固定类型的枚举。 [现场示例](http://coliru.stacked-crooked.com/a/cc6897fa1bfab56f) – dyp