C語言中列舉變數的用法
阿新 • • 發佈:2019-02-07
列舉型別若定義時不賦初值,那麼會預設對第一個元素賦0,後面的元素依次+1
也可以在定義時給任意的成員賦初值,未賦初值的使用預設值,即比前一元素大1。
如:enum test{a=10,b,c=11,d,e}
各個列舉變數的值為:a=10,b=11,c=11,d=12,e=13
因為a賦了初值10,b沒有初值,所以b預設比a大1,即b=11。
而c賦了初值11,故c=11。
d和e都沒有賦初值,故依次加1,d=12,e=13
同時還要注意列舉是有範圍的,但只有兩個範圍。只要使用列舉不超出範圍,就不會報錯
若列舉變數中沒有負值,則範圍是[0,2k-1]
若列舉變數中有負值,則範圍是[-2k,2k-1]
若定義一個列舉變數,則只能是通過自身列舉成員或者同一列舉型別的其他物件賦值。
enum test { a = 10, b, c, d, e };
test temp = c;
#列舉型別做函式返回值:
函式宣告必須有enum關鍵字:
- enum ENUMtest { a, b, c, d, e };
- int main(int argc, char** argv)
- {
- enum ENUMtest fun();//函式宣告必須有enum關鍵字
- int temp = fun();
- cout << temp << endl;
- system("PAUSE");
- }
- ENUMtest fun()//函式實現不需要enum關鍵字
- {
- return ENUMtest(1);
- }
同理:當列舉型別作為類的成員函式返回值時:
1. 要在宣告處加enum關鍵字
2. 要在函式實現處加類名::列舉名
- class A
- {
- enum ENUMtest { a, b, c, d, e };
- enum ENUMtest testFun();//函式宣告必須有enum關鍵字
- };
- A::ENUMtest testFun()//函式實現不需要enum關鍵字,但必須加類名::列舉名
- {
- return ENUMtest(1);
- }
小技巧:列舉變數的數量
enum ENUMtest{a,b,c,d,e,count};
如果列舉變數是從0開始以步長為1遞增的,那麼
只要在列舉變數最後加一個count,該count的值就是列舉變數的數量