jasmine214--love

          只有當(dāng)你的內(nèi)心總是充滿快樂(lè)、美好的愿望和寧?kù)o時(shí),你才能擁有強(qiáng)壯的體魄和明朗、快樂(lè)或者寧?kù)o的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          C++ ----枚舉

          Posted on 2010-08-04 11:50 幻海藍(lán)夢(mèng) 閱讀(145) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): C++
          原文:http://www.pconline.com.cn/pcedu/empolder/gj/c/0502/562347.html
          如果一個(gè)變量你需要幾種可能存在的值,那么就可以被定義成為枚舉類(lèi)型。之所以叫枚舉就是說(shuō)將變量或者叫對(duì)象可能存在的情況也可以說(shuō)是可能的值一一例舉出來(lái)。

            舉個(gè)例子來(lái)說(shuō)明一吧,為了讓大家更明白一點(diǎn),比如一個(gè)鉛筆盒中有一支筆,但在沒(méi)有打開(kāi)之前你并不知道它是什么筆,可能是鉛筆也可能是鋼筆,這里有兩種可能,那么你就可以定義一個(gè)枚舉類(lèi)型來(lái)表示它!

          enum?box{pencil,pen};//這里你就定義了一個(gè)枚舉類(lèi)型的變量叫box,這個(gè)枚舉變量?jī)?nèi)含有兩個(gè)元素也稱(chēng)枚舉元素在這里是pencil和pen,分別表示鉛筆和鋼筆。

            這里要說(shuō)一下,如果你想定義兩個(gè)具有同樣特性枚舉類(lèi)型的變量那么你可以用如下的兩種方式進(jìn)行定義!

          enum?box{pencil,pen};?
          ?
          enum?box?box2;//或者簡(jiǎn)寫(xiě)成box?box2;

            再有一種就是在聲明的時(shí)候同時(shí)定義。

          enum?{pencil,pen}box,box2;?//在聲明的同時(shí)進(jìn)行定義!

            枚舉變量中的枚舉元素系統(tǒng)是按照常量來(lái)處理的,故叫枚舉常量,他們是不能進(jìn)行普通的算術(shù)賦值的,(pencil=1;)這樣的寫(xiě)發(fā)是錯(cuò)誤的,但是你可以在聲明的時(shí)候進(jìn)行賦值操作!

          enum?box{pencil=1,pen=2};

          ? 但是這里要特別注意的一點(diǎn)是,如果你不進(jìn)行元素賦值操作那么元素將會(huì)被系統(tǒng)自動(dòng)從0開(kāi)始自動(dòng)遞增的進(jìn)行賦值操作,說(shuō)到自動(dòng)賦值,如果你只定義了第一個(gè)那么系統(tǒng)將對(duì)下一個(gè)元素進(jìn)行前一個(gè)元素的值加1操作,例如

          enum?box{pencil=3,pen};//這里pen就是4系統(tǒng)將自動(dòng)進(jìn)行pen=4的定義賦值操作!

            前面說(shuō)了那么多,下面給出一個(gè)完整的例子大家可以通過(guò)以下的代碼的學(xué)習(xí)進(jìn)行更完整的學(xué)習(xí)!

          #include?<iostream>?
          using?namespace?std;?
          ?
          void?main(void)?
          {?
          ????enum?egg?{a,b,c};?
          ????enum?egg?test;?//在這里你可以簡(jiǎn)寫(xiě)成egg?test;?
          ?
          ????test?=?c;?//對(duì)枚舉變量test進(jìn)行賦予元素操作,這里之所以叫賦元素操作不叫賦值操作就是為了讓大家明白枚舉變量是不能直接賦予算數(shù)值的,例如(test=1;)這樣的操作都是不被編譯器所接受的,正確的方式是先進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換例如(test?=?(enum?egg)?0;)!?
          ?
          ????if?(test==c)?
          ????{?
          ????????cout?<<"枚舉變量判斷:test枚舉對(duì)應(yīng)的枚舉元素是c"?<<?endl;?
          ????}?
          ?
          ????if?(test==2)?
          ????{?
          ????????cout?<<"枚舉變量判斷:test枚舉元素的值是2"?<<?endl;?
          ????}?
          ?
          ????cout?<<?a?<<?"|"?<<?b?<<?"|"?<<?test?<<endl;?
          ?
          ????test?=?(enum?egg)?0;?//強(qiáng)制類(lèi)型轉(zhuǎn)換?
          ????cout?<<?"枚舉變量test值改變?yōu)?"?<<?test?<<endl;?
          ????cin.get();?
          }

            看到這里要最后說(shuō)一個(gè)問(wèn)題,就是枚舉變量中的枚舉元素(或者叫枚舉常量)在特殊情況下是會(huì)被自動(dòng)提升為算術(shù)類(lèi)型的!

          #include?<iostream>?
          using?namespace?std;?
          ?
          void?main(void)?
          {?
          ????enum?test?{a,b};?
          ????int?c=1+b;?//自動(dòng)提升為算術(shù)類(lèi)型?
          ????cout?<<?c?<<endl;?
          ????cin.get();?
          }

          主站蜘蛛池模板: 玉屏| 北辰区| 隆子县| 迭部县| 英山县| 威海市| 勐海县| 新巴尔虎左旗| 永平县| 南靖县| 巢湖市| 抚州市| 成武县| 霞浦县| 阿鲁科尔沁旗| 宁德市| 枣强县| 浪卡子县| 伊通| 凤翔县| 禹州市| 克山县| 亚东县| 青浦区| 台山市| 平阳县| 昌吉市| 鹰潭市| 周至县| 宜春市| 连南| 邹平县| 成都市| 吴忠市| 建德市| 衡山县| 五指山市| 敦煌市| 凤山市| 石景山区| 新建县|