1. 程式人生 > >C++ 列舉型別的使用

C++ 列舉型別的使用

在程式開發的時候,我們有時候會給物件設定幾種狀態的值,典型的做法是定義幾個常數,表示幾種狀態,但是最好的方法是使用列舉來完成

下面來個例子:

#include <iostream>
using namespace std;
enum mycla{shuxue,waiyu,zhuanye,zhengzhi};

void myopen(mycla om){
        cout<<om<<endl;
}
int main(){
myopen(shuxue);
}

列舉的定義:
enum enum_name{a,b,c,d};
每個列舉都是一個型別,用這個型別就可以宣告變數
例子:
enum big_cities{beijing=3,shanghai,guangzhou,shijiazhuang};
big_cities mycity;//
如果mycity是全域性變數則為0,如果是區域性變數則為1,可以顯示的給它賦值,例如:
big_cities mycity=shanghai;//
等號右邊的值只能取列舉中的一個,並且不能直接的把一個整型賦值給一個列舉變數,因為列舉和整型是不同型別
#include <iostream>
using namespace std;
enum myci{beijing=3,shanghai,guangzhou};
myci ci2;
int main(){
myci ci1;
cout<<ci2<<endl;  //全域性變數輸出結果是0
cout<<ci1<<endl;  //區域性變數輸出結果是4055028
}
列舉型別大小sizeof一個列舉型別的sizeof就是某個能夠容納其範圍的整型的sizeof, 而且不會大於sizeof(int), 除非某個列舉子的值不能用int或者unsigned int來表示。所以一般的sizeof列舉都是4

相關推薦

C++列舉型別Enum及C++11強列舉型別用法

列舉常常和switch配合使用,用一個程式碼片段來說明: //W A S D 前、後、左、右行走\nQ E 左、右轉頭\nF 復位\nG H 暫停、繼續、重播例項\nY 停止例項\nB 刪除例項\nSPACE 刪除所有例項 enum Keydown{ Forward='w', Back

C++ 列舉型別詳解

列舉型別的定義 列舉型別(enumeration)是C++中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。 定義格式:列舉型別的定義格式為:     enum <型別名> {<列舉常量表>}; 其中: 關鍵字enum——指明其後的識別符

C/C++ 列舉型別詳解

列舉型別(enumeration)是C++中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。定義格式:列舉型別的定義格式為:enum <型別名> {<列舉常量表>};其中: 關鍵字enum——指明其後的識別符號是一個列舉型別的名字。列舉常

C++列舉型別和typedef宣告新的型別名

如果一個變數只能有幾種可能的值,可以定義為列舉型別。所謂列舉型別就是把變數的值一一列舉出來,變數的值只能在列舉出來的值的範圍內。 enum weekday{sun,mon,tue,wed,thu,fri,sat}; 上面聲明瞭一個列舉型別weekday

C++列舉型別enum

也可以自行定義,系統會自動調整所有值,規律是後面的列舉元素比前一個大1。 main() {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);}3. 只能把列舉值賦予列舉變數

C++列舉型別

enum 列舉名{ 列舉值表 }; 在列舉值表中應羅列出所有可用值。這些值也稱為列舉元素。 列舉型別的定義和初始化: enum weekday{ sun=7,mou=1,tue,wed,thu,f

C++ 列舉型別的使用

在程式開發的時候,我們有時候會給物件設定幾種狀態的值,典型的做法是定義幾個常數,表示幾種狀態,但是最好的方法是使用列舉來完成 下面來個例子: #include <iostream> usi

C++列舉型別實驗:三色球問題

口袋中有紅、黃、藍3種顏色的小球,如果每次從口袋中取出2種不同顏色的小球,編寫程式,打印出每種組合。#include <iostream> #include <string> u

Objective-C列舉型別詳解

最近看了一本OC進階的書,很多人推薦的Effective Objictive-C2.0,看到書中列舉型別的介紹,覺得很不錯,這裡為大家總結一下。 enum 由於Objective-C基於C語言,所以C語言有的功能它都有,其中之一就是列舉型別enum。列舉

Objective-C 列舉型別和字串互轉方案

列舉型別的使用優勢沒啥好說的。但經常需要將它與字串進行轉換方便顯示或其它需求。 在常見的方案中,多是先宣告,然後在實現檔案裡建立一個對映表。這樣帶來的問題就是要分兩個檔案來管理,帶來管理不方便不好。使用前還在確保對映表已經初始化。顯然使用時還是有些許難受。 如果全部改用巨集

C++列舉型別同名衝突問題

今天被C++列舉型別困擾了……之前寫程式一直沒有留意到這個問題,原來在C++中使用多個列舉型別時也是不能出現同名的。DAMN IT! 個人認為這一點C++的實現確實是不如C#中那樣的列舉型別先進……當然這裡面是有一定的歷史原因的,要相容C嘛。但願C++的下一個版本中會進行改進(已經有這個兆頭了:-)) 一時

C#列舉型別列舉型別與其他型別轉換、結構型別、陣列型別

1、C#中的常量用constant標定,不能改變或賦值; 2、列舉型別 [public ] enum 列舉名 // 訪問識別符號、列舉關鍵字、列舉名(符合Pascal命名規範) { 值1, 值2,(最後這個英文半形,可有可無) } 列舉型別的宣告:將列舉型

C語言之列舉型別

在C語言中,列舉型別(enumerated type)宣告符號名稱來表示整形常量。使用enum關鍵字,可以建立一個新“型別”並指定它可具有的值,如: //建立spectrum作標記名,那enum spectrum作為一個型別名使用 enum spectrum { red, orange,

C語言(結構體、列舉型別型別定義)

結構體的定義 1、`struct 結構體名 { 成員型別 成員名; … }; 2、省略結構體名 struct { 成員型別 成員名; ... }結構體變數名; 成員可以是其他已定義結構體的型別,但不能是自己結構體的型別,可以是自己結構體的指標。 定義

C語言查缺補漏(九)共用體與列舉型別

忽略點九:共用體與列舉型別 ​ 共用體?What?它是什麼,上了兩年大學的我有點懵逼。共用體已然成了我C語言的盲區。 ​ 存在必然有它的意義,所以惡補了一下有關共用體的知識。 ​ 在我的理解裡,共用體和上一篇博文所介紹的結構體,都是用來儲存不同資料型別的“容器”

C#從入門到精通____3.2.4列舉型別

列舉型別是一種獨特的值型別,它用於宣告一組具有相同性質的常量,使用列舉可以增加程式的可讀性和可維護性。在C#中使用關鍵字enum類宣告列舉,其形式如下。 enum 列舉名 { list1=value1, list2=value2, list3=

有關C語言的列舉型別和goto、break和continue語句

有關C語言的列舉型別和goto、break和continue語句 今天我們首先來看一下列舉型別,因為這個真的很容易讓人忘記,感覺平常都用不上的角色,所以今天特意將它拿出來講解一下 首先我們看一下列舉的一般用法 typedef enum { sun = 1, mon=2,

C 構造型別 陣列、列舉、聯合體、結構體(位段) 位元組對齊 和 大小端儲存

列舉 .列舉:被命名的標籤常量(對事物的列出) ---型別的構造------- enum key{    UP,                             //成員<標籤常量:預設第一個為0 後一個總是前一個的值加一>    DOWN,    L

C++ Primer第五版筆記--列舉型別

列舉型別可以將一組整型常量組織在一起;和類一樣,每個列舉型別定義了一種新的型別;列舉屬於字面常量型別。   C++包含兩種列舉:限定作用域(C++11新標準引入)的和不限定作用域的:   定義限定作用域的列舉型別的一般形式是:首先是關鍵字enum class(或者等價的使用struct)

C++11 強列舉型別的應用

一貫的風格,為什麼c++ 11為什麼要引入強列舉型別,主要是為了解決什麼問題? 在此之前我們來看看平時我們的列舉用法: enum是我們編譯器內建的型別. 首先列舉型別是不安全的,為什麼不安全? //體重 namespace T { enum Type {