sun = 5; ❌ 編譯錯誤sun=0, mon=1, ..., sat=6),可顯式指定初值a = sun;,不能 a = 0;。需轉換:a = (enum weekday)2; 相當於 a = tue;enum weekday { sun, mon, tue, wed, thu, fri, sat } a, b, c;
a = sun; b = mon; c = tue;
printf("%d,%d,%d", a, b, c); // 輸出 0,1,2
enum body { a, b, c, d } month[31], j;
j = a;
for (i=1; i<=30; i++) {
month[i] = j;
if (++j > d) j = a; // 循環 a→b→c→d
}
for (i=1; i<=30; i++) {
switch (month[i]) {
case a: printf("%2d %c\t", i, 'a'); break;
case b: printf("%2d %c\t", i, 'b'); break;
case c: printf("%2d %c\t", i, 'c'); break;
case d: printf("%2d %c\t", i, 'd'); break;
}
}
展示枚舉變量自增、邊界循環、switch 分支處理的完整流程。
printf 無法直接輸出元素名,只能輸出底層整數值#define 常量群