C與C 中的列舉

2022-08-15 06:00:19 字數 2095 閱讀 6685

1. c語言中 enum

void

test()

;enum

other ;

enum week week =mon;

//1. 允許非列舉值賦值給列舉型別, 允許其他列舉型別的值賦值給當前列舉型別

week = 100; //

okweek = one; //

ok//

2. 列舉值具有外層作用域,容易造成名字衝突

int one = 100; //

error

//3. 不同型別的列舉值可以直接比較

if (week ==one)

}

2. c++中 enum

void

test()

;enum

other ;

enum week week =mon;

//1. c++ 只能允許賦值列舉值

//week = 100;

//error

//week = one;

//error

//2. 列舉元素會暴露在外部作用域,不同的兩個列舉型別,若含有相同列舉元素,則會衝突

enum

otherweek ;

//3. c++ 只允許同列舉型別值之間比較

//enum e1 ;

//error

//enum e2 ;

//error

//cout << (e1::b == e2::d ? "相等" : "不相等") << endl;

//error

}

3. c++中的 enum class

void

test()

;enum

class e2 ;

//1. 強列舉型別不會將列舉元素暴露在外部作用域

cout

<< (int)(e1::a)

2. 不相關的兩個列舉型別不能直接比較,編譯報錯

cout

<< (e1::b == e2::c ? "

相等" : "

不相等") << endl; //

error

cout

<< (e1::b == 2 ? "

相等" : "

不相等") << endl; //

error

}

總結1. c 列舉型別支援不同型別列舉值之間賦值、以及數字賦值、比較,並且具有外層作用域。

2. c++ 中列舉不允許不同型別的值給列舉型別變數賦值,但仍然支援不同型別之間列舉進行比較,列舉符號常量具有挖外作用域。

3. c++ 強列舉型別不允許不同型別之間的賦值、比較,列舉常量值並不具有外層作用域。

c++列舉應用例項:

口袋中有紅、黃、藍、白、黑五種顏色的球若干個,每次從口袋中取三個不同顏色的球,統計並輸出所有的取法。

分析:由於球只能是五種顏色之一,故可用列舉型別表示球的顏色。設取出的球為i、j、k,根據題意,i、j、k分別可以有五種取值,且i≠j≠k。可以用窮舉法,逐個檢驗每一種可能的組合,從中找出符合要求的組合並輸出。

#include#include

using

namespace

std;

intmain(); //

宣告列舉型別color

color_set color;

int i,j,k,counter=0,loop; //

counter是累計不同顏色的組合數

for(i=red;i<=black;i++)

cout

<15)

*/for(loop=1;loop<=3;loop++)

switch

(color)

}cout

輸出一種取法後換行

} }}}

cout

<<"

共有:"

<"

種取法"

}

詳解C與C 中的列舉

void test enum week enum other enum week week mon 1.允許非列舉值賦值給列舉型別,允許其他列舉型別的值賦值給當前列舉型別 week 100 ok week one ok 2.列舉值具有外層作用域,容易造成名字衝突 int one 100 error ...

C與Objective C中的列舉 位移列舉

1.在c語言 中我們用到一串有關聯,被當作判斷狀態依據的常量時,會用到列舉enum,其使用 enum week 預設情況mon 0 後面依次加1,也可以自己指定 enum week 這樣mon 1 後面依然依次加1.2.在objective c 中,因為版本,有幾種實用列舉的樣式。使用c語言樣式 e...

c 中的結構與列舉

與c 不同的是,結構應該定義在命名空間或者類裡面,成員變數叫字段,字段並且有訪問控制符,每個欄位前要加乙個下劃線 using system using system.collections.generic using system.linq using system.text using syste...