青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小烏龜

在夢想的道路上還能走多遠

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
        讀K&R的The   C   Programmingh   Language   2nd,遇到一疑問,書中說:“盡管可以聲明enum類型的變量,但編譯器不檢查這種類型的變量中存儲的值是否為該枚舉的有效值。不過,枚舉變量提供這種檢查,因此枚舉比#define更具優勢。”
        枚舉變量提供這種檢查,什么意思?枚舉變量會自己檢?當然不是,作者也許想說程序員自己可以寫個程序檢查付給枚舉變量的值是否為該枚舉的有效值。
/* 包含頭文件 */ 
#include 
<stdio.h>

/* 枚舉類型 */
enum months{JAN = 1, FEB};

/* 函數原型 */
void enumeration(enum months m);

main()
{
    
enum months a = 2; 
    
enum months b = 50;        /* C中不需要強制轉換為enum months類型 */

    enum months c = JAN;

    enumeration(a);
    enumeration(b);

    
return 0;
}

/* enumeration函數:檢測枚舉變量存儲的值是否為該枚舉的有效值 */
void enumeration(enum months m)
{
    
switch (m)
    {
    
case JAN:
        printf(
"JAN: %d\n", JAN);
        
break;

    
case FEB:
        printf(
"FEB: %d\n", FEB);
        
break;

    
default:
        printf(
"%d不是該枚舉的有效值!\n", m);
        
break;
    }
}


而這段代碼如果改為C++源文件編譯,卻不能通過。原因如下:

根據C標準的規定,枚舉常量的類型為int,枚舉變量的類型應該與char、有符號或無符號整型兼容。因此,枚舉變量可以接受 char、有符號或無符號整型數,而不限于僅從此枚舉類型所定義的枚舉常量中取值。由于上述原因,在C語言中無法從語法上保證枚舉變量只能在定義的枚舉成員中取值,只能由程序員自身保證不使用除枚舉成員之外的值。

關于這一點,很多介紹C語言的書上或者資料上的描述是不正確的,應該加以注意。

但是,如果給枚舉變量賦枚舉成員之外的值,有的編譯器可能會對此產生警告,有的則不會。因為這種行為不違反C標準的規定,編譯器對此如何反應都是有道理的。

然而對于C++來說,編譯器會禁止給枚舉變量賦予枚舉成員之外的值。這是因為C++是一種強類型語言,枚舉類型不等同于 int 等其它類型。雖然枚舉類型可以隱式轉化為 int 等類型,但是 int 等類型卻不能自動轉化為枚舉類型,除非使用強制類型轉化。因此,如果不使用強制類型轉化的話,給枚舉變量賦值則只能從枚舉成員中選擇。對于枚舉類型要避免使用強制類型轉換。原因如下:
 
The   C++   Programming   Language上說:   
如果某個枚舉中所有枚舉值非負,枚舉的表示范圍為[0 : 2^k-1];其中2^K是使所有枚舉成員位于此范圍內的最小的2的冪;如果是負的,就是[-2^k : 2^k-1]。 因此對一個給定的整數值,如果使用強制類型轉換,而其值又不在枚舉的表示范圍以內,其行為是未定義的。

// 包含頭文件  
#include <iostream.h>

int main()
{
    
enum months{JAN = 1, FEB, MAR};

    
//enum months a = 1;              //cannot convert from 'const int' to 'enum main::months'
    enum months a = (enum months)1;
    cout 
<< "a: " << a << endl;    //輸出: a: 1

    
enum months b = (enum months)10;
    cout 
<< "b: " << b << endl;    //輸出: b: 10 雖然輸出10,但結果是未定義的,因為此枚舉的表示范圍為:0~3

    
return 0;
}
posted on 2008-07-29 15:35 小烏龜 閱讀(2861) 評論(2)  編輯 收藏 引用 所屬分類: C&C++

評論

# 小烏龜 2010-03-30 12:53 王繼晨
這種辦法不錯  回復  更多評論
  

# re: C/C++中的枚舉 2010-03-30 12:56 王繼晨
( 提交失敗后,可以通過“恢復上次提交”恢復剛剛提交的內容)  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品爱啪在线线免费观看| 免费欧美在线视频| 国产精品久久久久久久久久久久| 久久亚洲国产精品一区二区| 亚洲免费在线电影| 国产精品色网| 亚洲图片欧美午夜| 欧美一区国产在线| 欧美日韩中文字幕在线| 99ri日韩精品视频| 欧美国产成人在线| 一区二区免费看| 亚洲国产高清在线| 亚洲第一中文字幕| 欧美激情四色 | 一本一道久久综合狠狠老精东影业| 韩国成人精品a∨在线观看| 国产三区精品| 一区二区三区在线免费观看| 亚洲国产精品久久久久久女王| 亚洲黄色性网站| 亚洲经典自拍| 亚洲性视频网站| 欧美亚洲免费电影| 久久九九免费| 亚洲女人天堂av| 久久久免费观看视频| 久久综合九色综合欧美就去吻| 免费高清在线视频一区·| 美日韩精品视频免费看| 亚洲日本在线观看| 亚洲小视频在线观看| 欧美一区二区大片| 欧美成人按摩| 一区二区高清视频| 久久精品亚洲一区二区| 欧美激情精品久久久久久久变态 | 久久久久久久久久码影片| 欧美一级理论片| 久久综合精品国产一区二区三区| 老司机午夜精品视频| 欧美高清影院| 99精品免费| 久久久久久久综合狠狠综合| 欧美精品一区二区视频| 国产午夜久久久久| 日韩午夜av在线| 久久国产精品亚洲77777| 亚洲国产精品专区久久| 欧美精品在线一区二区三区| 国产精品久久7| 欧美视频中文一区二区三区在线观看| 欧美日韩精品福利| 国产精品一区二区久久国产| 宅男精品视频| 欧美日本一区二区视频在线观看| 国产精品美女久久久| 亚洲高清毛片| 久久国产日本精品| 亚洲精品中文字幕女同| 久久久久久久久久看片| 国产精品黄页免费高清在线观看| 国内外成人免费激情在线视频网站 | 欧美日韩一区三区| 尤物九九久久国产精品的特点| 亚洲综合成人在线| 欧美激情一区二区三区蜜桃视频| 午夜精彩视频在线观看不卡 | 国内精品久久久久久久果冻传媒| 亚洲一区不卡| 亚洲激情午夜| 久久这里只精品最新地址| 国产一区二区高清不卡| 亚洲免费视频一区二区| 亚洲精品免费在线播放| 猫咪成人在线观看| 国语自产精品视频在线看一大j8| 午夜精品国产更新| 99精品国产福利在线观看免费| 另类尿喷潮videofree| 亚洲欧美日韩综合| 欧美日本免费| 亚洲精品在线免费观看视频| 欧美jizz19性欧美| 欧美专区在线观看一区| 国产一区二区三区在线免费观看| 香蕉av福利精品导航| 一区二区三区.www| 国产精品久久福利| 亚洲综合日本| 午夜国产精品影院在线观看| 国产精品视频自拍| 亚洲欧美日韩直播| 亚洲午夜久久久久久久久电影网| 亚洲人精品午夜在线观看| 欧美激情在线观看| 欧美日韩在线直播| 欧美一区二区视频观看视频| 在线亚洲欧美专区二区| 亚洲国产欧美一区| 小黄鸭精品aⅴ导航网站入口| 欧美一区二区三区免费观看视频| 欧美理论电影网| 亚洲图片你懂的| 亚洲一区亚洲二区| 国内精品久久久久久久97牛牛| 久久琪琪电影院| 欧美成人中文字幕| 亚洲图片在线| 性色一区二区三区| 亚洲丁香婷深爱综合| 亚洲国产成人av| 欧美激情2020午夜免费观看| 亚洲二区在线观看| 亚洲精品美女免费| 国产精品免费看| 欧美 日韩 国产一区二区在线视频 | 国产精品高潮久久| 亚洲欧美精品伊人久久| 亚洲专区一二三| 国产中文一区| 亚洲国产精品久久久久| 欧美日韩在线免费观看| 新片速递亚洲合集欧美合集| 欧美伊人久久久久久久久影院| 麻豆精品传媒视频| 亚洲在线免费| 老司机午夜免费精品视频| 日韩视频中文| 欧美一区二区三区视频在线 | 亚洲欧美综合一区| 99在线精品视频在线观看| 国产一区二区三区高清在线观看| 一区二区久久久久久| 久久精品视频99| 一区二区冒白浆视频| 欧美影院视频| 亚洲综合色视频| 性色av一区二区三区在线观看| 亚洲第一毛片| 亚洲免费在线视频| 国产精品乱子乱xxxx| 亚洲国产精品一区二区第一页| 国产一区二区三区久久久| 欧美激情视频网站| 久久久久久九九九九| 国产一区二区精品久久91| 午夜精品短视频| 久久影院午夜论| 欧美视频在线观看 亚洲欧| 日韩一区二区精品视频| 午夜一级久久| 亚洲午夜在线观看视频在线| 亚洲茄子视频| 免费成人性网站| 久久久久久久久久久成人| 欧美午夜精品久久久久久浪潮| 欧美成人激情在线| 激情视频亚洲| 欧美中文字幕久久| 欧美一区二区三区视频在线 | 蜜桃精品久久久久久久免费影院| 欧美日韩综合精品| 欧美一区2区三区4区公司二百| 亚洲精品一线二线三线无人区| 国产精品久久久久久久久果冻传媒| 欧美一区二区精品| 欧美日本三区| 欧美二区在线观看| 精品91免费| 午夜国产精品影院在线观看| 中文国产亚洲喷潮| 欧美乱妇高清无乱码| 蜜桃av一区二区| 国产在线视频欧美一区二区三区| 一区二区三区日韩| 亚洲欧洲日韩女同| 欧美国产日本韩| 日韩视频免费观看| 亚洲精品一区二区三区不| 久久五月天婷婷| 久久久91精品国产一区二区三区| 欧美三级黄美女| 亚洲美女视频在线观看| 亚洲啪啪91| 久久久久国产精品一区三寸| 午夜精品久久久久99热蜜桃导演| 欧美日韩免费一区二区三区视频| 欧美高清一区| 亚洲美女在线国产| 欧美区在线观看| 一级成人国产| 久久激情五月婷婷| 亚洲国产精品一区二区第四页av| 免费成人黄色片| 日韩一二三在线视频播| 亚洲午夜激情在线| 免费成人在线观看视频| 麻豆成人精品| 亚洲国产精品一区在线观看不卡|