亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

講解C++中的枚舉類型以及聲明新類型的方法

2020-01-26 14:52:28
字體:
來源:轉載
供稿:網友

C++枚舉類型
如果一個變量只有幾種可能的值,可以定義為枚舉(enumeration)類型。所謂“枚舉”是指將變量的值一一列舉出來,變量的值只能在列舉出來的值的范圍內。聲明枚舉類型用enum開頭。例如:

  enum weekday{sun, mon, tue, wed, thu, fri, sat};

上面聲明了一個枚舉類型weekday,花括號中sun, mon, …, sat等稱為枚舉元素或枚舉常量。表示這個類型的變量的值只能是以上7個值之一。它們是用戶自己定義的標識符。

聲明枚舉類型的一般形式為:

  enum 枚舉類型名{枚舉常量表列};

在聲明了枚舉類型之后,可以用它來定義變量。如:

  weekday workday,week_end;

這樣,workday和week_end被定義為枚舉類型weekday的變量。

在C語言中,枚舉類型名包括關鍵字enum,以上的定義可以寫為:

  enum weekday workday,week_end;

在C++中允許不寫enum,一般也不寫enum,但保留了C的用法。根據以上對枚舉類型weekday的聲明,枚舉變量的值只能是sun到sat之一。例如:

  workday=mon; week_end=sun;

是正確的。也可以直接定義枚舉變量,如:

  enum{sun, mon, tue, wed, thu, fri, sat} workday,week_end;

這些標識符并不自動地代表什么含義。

對枚舉類型的幾點說明:
對枚舉元素按常量處理,故稱枚舉常量。
枚舉元素作為常量,它們是有值的,C++編譯按定義時的順序對它們賦值為0,1,2,3,…。也可以在聲明枚舉類型時另行指定枚舉元素的值。
枚舉值可以用來做判斷比較。
一個整數不能直接賦給一個枚舉變量。

【例】口袋中有紅、黃、藍、白、黑5種顏色的球若干個。每次從口袋中任意取出3個球,問得到3種不同顏色的球的可能取法,輸出每種排列的情況。

#include <iostream>#include <iomanip>//在輸出時要用到setw控制符using namespace std;int main( ){  enum color {red,yellow,blue,white,black}; //聲明枚舉類型color  color pri; //定義color類型的變量pri  int i,j,k,n=0,loop; //n是累計不同顏色的組合數  for (i=red;i<=black;i++) //當i為某一顏色時   for (j=red;j<=black;j++) //當j為某一顏色時     if (i!=j) //若前兩個球的顏色不同     {      for (k=red;k<=black;k++) //只有前兩個球的顏色不同,才需要檢查第3個球的顏色        if ((k!=i) && (k!=j)) //3個球的顏色都不同        {         n=n+1;//使累計值n加1         cout<<setw(3)<<n; //輸出當前的n值,字段寬度為3         for (loop=1;loop<=3;loop++) //先后對3個球作處理         {           switch (loop) //loop的值先后為1,2,3           {             case 1: pri=color(i);break ; //color(i)是強制類型轉換,使pri的值為i             case 2: pri=color(j);break ; //使pri的值為j             case 3: pri=color(k);break ; //使pri的值為k             default :break ;      }      switch (pri)//判斷pri的值,輸出相應的“顏色”      {        case red: cout<<setw(8)<<"red"; break;        case yellow: cout<<setw(8)<<"yellow";break;        case blue:cout<<setw(8)<<"blue"; break ;        case white:cout<<setw(8)<<"white"; break ;        case black:cout<<setw(8)<<"black"; break ;        default : break ;      }     }     cout<<endl;   }  }  cout<<"total:"<<n<<endl; //輸出符合條件的組合的個數  return 0;}

運行結果如下:

1 red yellow blue 2 red yellow white 3 red yellow black┆┆┆58 black white red59 black white yellow60 black white bluetotal:60

不用枚舉常量,而用常數0代表“紅”,1代表“黃”……也可以。但顯然用枚舉變量更直觀,因為枚舉元素都選用了令人“見名知意”的標識符,而且枚舉變量的值限制在定義時規 定的幾個枚舉元素范圍如果賦予它一個其他的值,就會出現出錯信息,便于檢查。

C++ typedef 聲明新類型
在C++中,除了可以聲明結構體、共用體、枚舉等類型外,還可以用typedef聲明一個新的類型名來代替已有的類型如:

  •     typedef int INTEGER;  //指定用標識符INTEGER代表int類型
  •     typedef float REAL;  //指定用REAL代表float類型

這樣,以下兩行等價:

  •     int i,j; float a,b;
  •     INTEGER i,j; REAL a,b;

這樣可以使熟悉FORTRAN的人能用INTEGER和REAL定義變量,以適應他們的習慣。

如果在一個程序中,整型變量是專門用來計數的,可以用COUNT來作為整型類型名:

  typedef int COUNT; //指定用COUNT代表int型  COUNT i,j; //將變量i,j定義為COUNT類型

即int類型在程序中將變量i, j定義為COUNT類型,可以使人更一目了然地知道它們是用于計數的。

也可以聲明結構體類型:

typedef struct //注意在struct之前用了關鍵字typedef,表示是聲明新名{  int month; int day; int year;}DATE; //注意DATE是新類型名,而不是結構體變量名

所聲明的新類型名DATE代表上面指定的一個結構體類型。這樣就可以用DATE定義變量:
    DATE birthday; DATE *p;  //p為指向此結構體類型數據的指針
還可以進一步:

typedef int NUM[100]; //聲明NUM為整型數組類型,包含100個元素NUM n; //定義n為包含100個整型元素的數組typedef char *STRING; //聲明STRING為字符指針類型STRING p,s[10]; //p為字符指針變量,s為指針數組(有10個元素)typedef int (*POINTER)( ) //聲明POINTER為指向函數的指針類型,函數返回整型值POINTER p1, p2; // p1,p2為POINTER類型的指針變量

歸納起來,聲明一個新的類型名的方法是:

  • 先按定義變量的方法寫出定義語句(如int i;)。
  • 將變量名換成新類型名(如將i換成COUNT)。
  • 在最前面加typedef(如typedef int COUNT)。
  • 然后可以用新類型名去定義變量。

再以聲明上述的數組類型為例來說明:

  • 先按定義數組形式書寫: int n[100];
  • 將變量名n換成自己指定的類型名:int NUM[100];
  • 在前面加上typedef,得到 typedef int NUM[100];
  • 用來定義變量: NUM n;(n是包含100個整型元素的數組)。

習慣上常把用typedef聲明的類型名用大寫字母表示,以便與系統提供的標準類型標識符相區別。

關于typedef的幾點說明:

  • typedef可以聲明各種類型名,但不能用來定義變量。用typedef可以聲明數組類型、字符串類型,使用比較方便。
  • 用typedef只是對已經存在的類型增加一個類型名,而沒有創造新的類型。
  • 當在不同源文件中用到同一類型數據(尤其是像數組、指針、結構體、共用體等類型數據)時,常用typedef聲明一些數據類型,把它們單獨放在一個頭文件中,然后在需要用到它們的文件中用#include命令把它們包含進來,以提高編程效率。
  • 使用typedef有利于程序的通用與移植。有時程序會依賴于硬件特性,用typedef便于移植。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频白浆免费视频| 国产欧美一区二区三区在线| 91精品久久久久久久| 91久久精品一区| 亚洲综合成人婷婷小说| 亚洲一区二区少妇| 91久久国产精品91久久性色| 国产亚洲视频在线| 韩国一区二区电影| 久久久之久亚州精品露出| 亚洲性夜色噜噜噜7777| 日本国产欧美一区二区三区| 亚洲成人a**站| 成人免费看黄网站| 欧美成人精品在线视频| 欧美性xxxx| 日韩中文第一页| 欧美超级乱淫片喷水| 国产视频在线一区二区| 91欧美精品成人综合在线观看| 美女国内精品自产拍在线播放| xxxxx成人.com| 一本色道久久88精品综合| 国产精品久久久久久久一区探花| 日韩av免费在线观看| 欧美午夜精品久久久久久久| 伦伦影院午夜日韩欧美限制| 91精品久久久久久久久久| 亚洲欧美日韩中文在线制服| 欧美在线视频一区| 大量国产精品视频| 在线播放国产一区二区三区| 亚洲男人天堂2024| 亚洲国产精品99| 91九色综合久久| 午夜精品久久久久久99热| 成人在线一区二区| 国产精品福利网| 精品久久久香蕉免费精品视频| 成人黄在线观看| 77777少妇光屁股久久一区| 国产免费一区二区三区香蕉精| 国产欧美精品在线| 国产综合在线视频| 亚洲人成电影网站色xx| 成人美女av在线直播| 欧美区二区三区| 国产有码一区二区| 亚洲精品aⅴ中文字幕乱码| 欧美黑人狂野猛交老妇| 精品视频在线播放色网色视频| 日韩亚洲精品视频| 亚洲视频一区二区三区| 国产日本欧美一区二区三区在线| 欧美在线影院在线视频| 亚洲欧洲一区二区三区在线观看| 57pao国产成人免费| 青青草99啪国产免费| 麻豆乱码国产一区二区三区| 日韩av在线免费观看一区| www.久久草.com| 国产97在线播放| 影音先锋欧美精品| 欧美俄罗斯乱妇| 中文字幕在线日韩| 国产日韩综合一区二区性色av| 亚洲欧美另类人妖| 国产精品自产拍高潮在线观看| 日韩成人av网| 欧美日韩中文在线| 亚洲网站在线观看| 国产成人在线精品| 中文字幕欧美国内| 91精品国产自产在线观看永久| 国产精品69久久| 亚洲日韩第一页| 精品一区二区三区四区| 欧美成在线观看| 欧美老妇交乱视频| 日本乱人伦a精品| 成人激情黄色网| 亚洲精品自拍第一页| 亚洲裸体xxxx| 国产精品高精视频免费| 欧美成人精品影院| 久久久久久久av| 亚洲欧美日韩一区二区在线| 亚洲成人xxx| 欧美日韩亚洲一区二区三区| 日本欧美精品在线| 亚洲欧洲在线看| 91精品久久久久久久久久久久久久| 插插插亚洲综合网| 久久久999精品视频| 一本色道久久88综合亚洲精品ⅰ| 日韩中文字幕精品| 国产一区二区丝袜| 国产精品美女久久| 国产精品午夜一区二区欲梦| 日韩av在线一区二区| 狠狠躁夜夜躁人人爽超碰91| 日韩在线观看电影| 欧美精品18videos性欧美| 欧美日韩高清在线观看| 亚洲精品99久久久久| 最近免费中文字幕视频2019| 日本久久久久亚洲中字幕| 亚洲精品国产欧美| 高跟丝袜一区二区三区| 日韩成人激情在线| 青青精品视频播放| 国产成人精彩在线视频九色| 国产精品夜色7777狼人| 欧美日韩精品在线播放| 97色在线观看免费视频| 啪一啪鲁一鲁2019在线视频| 自拍偷拍亚洲在线| 亚洲精品xxxx| 国产日本欧美一区二区三区| 91av在线精品| 亚洲美女又黄又爽在线观看| 欧美老女人在线视频| 欧美黄色片视频| 97在线看免费观看视频在线观看| 日韩av一区在线| 亚洲偷熟乱区亚洲香蕉av| 在线成人中文字幕| 中文字幕欧美日韩va免费视频| 日韩高清电影免费观看完整版| 欧美成在线观看| 国产一区二区三区毛片| 日本欧美黄网站| 国产精品毛片a∨一区二区三区|国| 久久久久久久激情视频| 日韩精品中文字幕在线播放| 亚洲精品www久久久久久广东| 亚洲丝袜av一区| 欧洲永久精品大片ww免费漫画| 日韩欧美a级成人黄色| 日av在线播放中文不卡| 欧美成人午夜免费视在线看片| 亚洲国产精品人久久电影| 91极品女神在线| 久久91超碰青草是什么| 日韩精品在线第一页| 九九热r在线视频精品| 欧美日韩国产黄| 欧美精品久久久久a| 色99之美女主播在线视频| 欧美精品免费在线观看| 日韩精品亚洲元码| 2021国产精品视频| 91豆花精品一区| 中文字幕日韩在线播放| 91精品啪在线观看麻豆免费| 在线视频欧美日韩| 91欧美视频网站| 在线播放国产精品| 欧美一区二区大胆人体摄影专业网站| 国产精品va在线播放我和闺蜜| 欧美区在线播放| 亚洲精品久久久久中文字幕欢迎你| 韩国欧美亚洲国产| 欧美性视频精品|