最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年09月15日 23:44:07   投稿:goldensun  
這篇文章主要介紹了講解C++中的枚舉類型以及聲明新類型的方法,是C預言入門學習中的基礎知識,需要的朋友可以參考下

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的用法。根據(jù)以上對枚舉類型weekday的聲明,枚舉變量的值只能是sun到sat之一。例如:

  workday=mon; week_end=sun;

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

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

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

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

【例】口袋中有紅、黃、藍、白、黑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是累計不同顏色的組合數(shù)
  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; //輸出符合條件的組合的個數(shù)
  return 0;
}

運行結果如下:

1 red yellow blue 2 red yellow white 3 red yellow black
┆
┆
┆
58 black white red
59 black white yellow
60 black white blue
total:60

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

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定義變量,以適應他們的習慣。

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

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

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

也可以聲明結構體類型:

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

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

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

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

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

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

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

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

關于typedef的幾點說明:

  • typedef可以聲明各種類型名,但不能用來定義變量。用typedef可以聲明數(shù)組類型、字符串類型,使用比較方便。
  • 用typedef只是對已經(jīng)存在的類型增加一個類型名,而沒有創(chuàng)造新的類型。
  • 當在不同源文件中用到同一類型數(shù)據(jù)(尤其是像數(shù)組、指針、結構體、共用體等類型數(shù)據(jù))時,常用typedef聲明一些數(shù)據(jù)類型,把它們單獨放在一個頭文件中,然后在需要用到它們的文件中用#include命令把它們包含進來,以提高編程效率。
  • 使用typedef有利于程序的通用與移植。有時程序會依賴于硬件特性,用typedef便于移植。

相關文章

  • C/C++如何獲取當前系統(tǒng)時間的實例詳解

    C/C++如何獲取當前系統(tǒng)時間的實例詳解

    這篇文章主要介紹了 C/C++如何獲取當前系統(tǒng)時間的實例詳解的相關資料,這里提供了幾種實現(xiàn)方法,幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 如何在c++中實現(xiàn)字符串分割函數(shù)split詳解

    如何在c++中實現(xiàn)字符串分割函數(shù)split詳解

    這篇文章主要給大家介紹了關于如何在c++中實現(xiàn)字符串分割函數(shù)split的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹堆

    C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹堆

    這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結構二叉樹堆的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • C語言開發(fā)實現(xiàn)貪吃蛇小游戲

    C語言開發(fā)實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C語言開發(fā)實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 使用Qt實現(xiàn)控制臺抓取tcp數(shù)據(jù)包

    使用Qt實現(xiàn)控制臺抓取tcp數(shù)據(jù)包

    這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)控制臺抓取tcp數(shù)據(jù)包,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-11-11
  • c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題

    c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題

    這篇文章主要介紹了c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • C語言函數(shù)的基本使用和遞歸詳解

    C語言函數(shù)的基本使用和遞歸詳解

    一個函數(shù)在它的函數(shù)體內調用它自身稱為遞歸調用。這種函數(shù)稱為遞歸函數(shù)。C語言允許函數(shù)的遞歸調用。在遞歸調用中,主調函數(shù)又是被調函數(shù)。執(zhí)行遞歸函數(shù)將反復調用其自身,每調用一次就進入新的一層
    2021-09-09
  • 關于C++ string和c類型字符數(shù)組的對比

    關于C++ string和c類型字符數(shù)組的對比

    下面小編就為大家?guī)硪黄P于C++ string和c類型字符數(shù)組的對比。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • C++實現(xiàn)LeetCode(68.文本左右對齊)

    C++實現(xiàn)LeetCode(68.文本左右對齊)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(68.文本左右對齊),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • 詳解如何在C/C++中測量一個函數(shù)或功能的運行時間

    詳解如何在C/C++中測量一個函數(shù)或功能的運行時間

    本文算是一個比較完整的關于在 C/C++ 中測量一個函數(shù)或者功能的總結,最后會演示三種方法的對比,文章通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論

西充县| 思茅市| 上杭县| 县级市| 永德县| 包头市| 黎川县| 台湾省| 东宁县| 龙口市| 延庆县| 天台县| 汕头市| 华容县| 西安市| 福建省| 黄梅县| 乌恰县| 永善县| 大厂| 汤原县| 乌海市| 清原| 玉林市| 卢氏县| 岳西县| 永嘉县| 安国市| 荔浦县| 郎溪县| 永靖县| 禹州市| 定兴县| 文登市| 麦盖提县| 武功县| 黄山市| 大方县| 肃南| 三明市| 东兰县|