根據§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