次のコードがあります。
enum e {
X=1,
Y,
Z
}
最初の要素が 1 に定義されている場合、enum 要素の値はどうなりますか?
他の要素はそれぞれ 1 ずつインクリメントされますか?
他の誰もが言っているように、答えはイエスです。これが標準の言い方です。
C99仕様。セクション 6.7.2.2 列挙指定子。パラグラフ 3
列挙子リスト内の識別子は、int 型の定数として宣言され、そのようなものが許可されている場所であればどこにでも表示できます。) = を持つ列挙子は、その列挙定数を定数式の値として定義します。最初の列挙子に = がない場合、その列挙定数の値は 0 です。
= が指定されていない後続の各列挙子は、その列挙定数を、前の列挙定数の値に 1 を加算することによって得られる定数式の値として定義します。(列挙子を = とともに使用すると、同じ列挙内の他の値と重複する値を持つ列挙定数が生成される場合があります。)
列挙の列挙子は、そのメンバーとも呼ばれます。
最初の要素が 1 に定義されている場合、enum 要素の値はどうなりますか?
Y = 2、Z = 3 (特に指定のない限り)。
他の要素はそれぞれ 1 ずつインクリメントされますか?
はい。
はい、Y は 2、Z は 3 になります。明示的に設定されていない場合、列挙は増加します。