1. 程式人生 > >C語言中列舉變數的用法

C語言中列舉變數的用法

列舉型別若定義時不賦初值,那麼會預設對第一個元素賦0,後面的元素依次+1

也可以在定義時給任意的成員賦初值,未賦初值的使用預設值,即比前一元素大1

如:enum test{a=10,b,c=11,d,e}

各個列舉變數的值為:a=10,b=11,c=11,d=12,e=13

因為a賦了初值10b沒有初值,所以b預設比a1,即b=11

c賦了初值11,故c=11

de都沒有賦初值,故依次加1d=12e=13

同時還要注意列舉是有範圍的,但只有兩個範圍。只要使用列舉不超出範圍,就不會報錯

若列舉變數中沒有負值,則範圍是[0,2k-1]

若列舉變數中有負值,則範圍是[-2k,2k-1]

若定義一個列舉變數,則只能是通過自身列舉成員或者同一列舉型別的其他物件賦值。

enum test { a = 10, b, c, d, e }; 
test temp = c;

#列舉型別做函式返回值:

函式宣告必須有enum關鍵字:

  1. enum ENUMtest { a, b, c, d, e };  
  2. int main(int argc, char** argv)  
  3. {  
  4.     enum ENUMtest fun();//函式宣告必須有enum關鍵字
  5.     int temp = fun();  
  6.     cout << temp << endl;  
  7.     system("PAUSE");  
  8. }  
  9. ENUMtest fun()//函式實現不需要enum關鍵字
  10. {  
  11.     return ENUMtest(1);  
  12. }  

同理:當列舉型別作為類的成員函式返回值時:

1. 要在宣告處加enum關鍵字

2. 要在函式實現處加類名::列舉名

  1. class A  
  2. {  
  3.     enum ENUMtest { a, b, c, d, e };  
  4.     enum ENUMtest testFun();//函式宣告必須有enum關鍵字
  5. };  
  6. A::ENUMtest testFun()//函式實現不需要enum關鍵字,但必須加類名::列舉名
  7. {  
  8.     return ENUMtest(1);  
  9. }  

小技巧:列舉變數的數量

enum ENUMtest{a,b,c,d,e,count};

如果列舉變數是從0開始以步長為1遞增的,那麼

只要在列舉變數最後加一個count,該count的值就是列舉變數的數量