C語言enum關鍵字

很多初學者對枚舉(enum)感到迷惑,或者認為沒什么用,其實枚舉(enum)是個很有用的數據類型。

一、枚舉類型的使用方法

一般的定義方式如下:
enum enum_type_name
{
? ?ENUM_CONST_1,
? ?ENUM_CONST_2,
? ?...
? ?ENUM_CONST_n
} enum_variable_name;

注意:enum_type_name 是自定義的一種數據數據類型名,而enum_variable_name 為enum_type_name類型的一個變量,也就是我們平時常說的枚舉變量。實際上enum_type_name類型是對一個變量取值范圍的限定,而花括號內是它的取值范圍,即enum_type_name 類型的變量enum_variable_name 只能取值為花括號內的任何一個值,如果賦給該類型變量的值不在列表中,則會報錯或者警告。ENUM_CONST_1、ENUM_CONST_2、...、ENUM_CONST_n,這些成員都是常量,也就是我們平時所說的枚舉常量(常量一般用大寫)。

enum 變量類型還可以給其中的常量符號賦值,如果不賦值則會從被賦初值的那個常量開始依次加1,如果都沒有賦值,它們的值從0 開始依次遞增1。如分別用一個常數表示不同顏色:
enum Color
{
? ?GREEN = 1,
? ?RED,
? ?BLUE,
? ?GREEN_RED = 10,
? ?GREEN_BLUE
}ColorVal;

其中各常量名代表的數值分別為:
? ?GREEN = 1
? ?RED = 2
? ?BLUE = 3
? ?GREEN_RED = 10
? ?GREEN_BLUE = 11

二、枚舉與#define 宏的區別

下面再看看枚舉與#define 宏的區別:
1)#define 宏常量是在預編譯階段進行簡單替換。枚舉常量則是在編譯的時候確定其值。
2)一般在編譯器里,可以調試枚舉常量,但是不能調試宏常量。
3)枚舉可以一次定義大量相關的常量,而#define 宏一次只能定義一個。

留兩個問題:
A),枚舉能做到事,#define 宏能不能都做到?如果能,那為什么還需要枚舉?
B),sizeof(ColorVal)的值為多少?為什么?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dubbo 需求、架構、使用Demo

只是整理下方便自己記錄 內容全部來自官網:http://dubbo.io/books/dubbo-user-book/preface/usage.html 一、需求 在大規模服務化之前,應用可能只是通過 RMI 或 Hessian 等工具,簡單的暴露和引用遠程服務,通過配置服務的URL地址進…

Ubuntu安裝之python開發

Ubuntu安裝之python開發 什么??Ubuntu(烏班圖)開發?不會用??怎么進行python開發??? 烏班圖操作系統下載地址:http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-…

vimdiff和vim-fugitive安裝,使用教程

1、vimdiff的安裝 在終端執行 git config --global merge.tool vimdiff git config --global merge.conflictstyle diff3 git config --global mergetool.prompt false git config --global diff.tool vimdiff git config --global difftool.prompt false git config --…

在 PowerPoint 2016 中嵌入網頁

之前在智圖這個網站上做了一張地圖,在嵌入 PPT 里面的時候碰到了一些問題,現在把找到的解決方法寫下來。 PPT 里面自帶的 WebBrowser 控件可以實現網頁瀏覽的功能。在“開發工具”選項卡下的“其他控件”中找到“Microsoft Web Browser”,在畫…

js 正則表達式 整合

正則表達式:斷言 取字符串區間: /(?<[" star "]).*(?[" end "])/// 簡單封裝 Vue.prototype.strMatch (str,star,end) > { let regs new RegExp("(?<[" star "]).*(?[" end "])"); let req str…

dubbo 注冊中心zookeeper 手冊

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 zookeeper 注冊中心 Zookeeper 是 Apacahe Hadoop 的子項目&#xff0c;是一個樹型的目錄服務&#xff0c;支持變更推送&#xff0c;適…

數組 深入詳解

再論C語言數組 C語言處理數組的方式是它廣受歡迎的原因之一。C語言對數組的處理是非常有效的&#xff0c;其原因有以下三點&#xff1a;第一&#xff0c;除少數翻譯器出于謹慎會作一些繁瑣的規定外&#xff0c;C語言的數組下標是在一個很低的層次上處理的。但這個優點也有一個反…

oracle ins-30131錯誤

打開cmd 但是在我的環境沒效果&#xff0c;而我已知臨時目錄沒有問題。那么在命令行進入安裝軟件目錄&#xff0c;通過命令行啟動安裝程序&#xff0c;設置 ignorePrereq 檢查&#xff0c;此時數據庫軟件可以啟動安裝&#xff0c;是否會出現錯誤&#xff0c;就看忽略的檢查是否…

iOS開發UI篇—簡單介紹靜態單元格的使用

一、實現效果與說明 說明&#xff1a;觀察上面的展示效果&#xff0c;可以發現整個界面是由一個tableview來展示的&#xff0c;上面的數據都是固定的&#xff0c;且幾乎不會改變。 要完成上面的效果&#xff0c;有幾種方法&#xff1a; &#xff08;1&#xff09;可以直接利用代…

展示內容

今天課上展示了軟件 評價為過于簡單 還需另尋他法轉載于:https://www.cnblogs.com/wmqlzm/p/10041683.html

dubbo ,dubbo-provider、dubbo-consumer 配置參數說明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 dubbo:consumer 服務消費者缺省值配置。配置類&#xff1a; com.alibaba.dubbo.config.ConsumerConfig 。同時該標簽為 <dubbo:refer…

laraval使用sqlite設置從多少開始遞增

DB::statement( "UPDATE SQLITE_SEQUENCE SET seq 起始值 WHERE name 表名" ); sqlite3默認就是1。 新建了含PRIMARY KEY AUTOINCREMENT 主鍵自增表(如 test1)后&#xff0c;會自動在sqlite_sequence表插入或更新一條信息&#xff0c;其中保存了相關主鍵的最大值&…

指針深入探討

C語言變量的內存實質 一、先來理解C語言中變量的實質 要理解C指針&#xff0c;我認為一定要理解C中“變量”的存儲實質&#xff0c;所以我就從“變量”這個東西開始講起吧&#xff01;先來理解理解內存空間吧&#xff01;請看下圖&#xff1a; 如上圖所示&#xff0c;內存只不…

springboot_yml配置

server: port: 8097 session-timeout: 30 tomcat.max-threads: 0 tomcat.uri-encoding: UTF-8 spring: application: name: feedback # 數據庫配置 datasource: name: test #url: jdbc:mysql://192.168.0.180:3306/dsdb #url: jdbc:m…

Python 字符串查找子串的方法之 index() 和 find()

find(substr, beg0, endlen(string)): 在[beg, end]范圍內查找substring&#xff0c;找到返回substr的起始下標&#xff0c;否則返回 -1。 1 string Hello Python 2 print(string.find(h, 0, len(string))) # 輸出 9 3 print(string.find(thon) # 輸出 84 print(strin.find(…

sqlite 設置向下遞增

因為 sqlite是沒有floor函數的 所以用 cast(x as int) - (x < cast(x as int)) 原理 cast(1.1 as int) 1 cast(-1.1 as int) -1&#xff08;我們想要的結果為2&#xff09; 如果x為非負 cast(x as int)是可以的 但是有負的話就加上后面 (x < cast(x as int))…

Docker 是什么,組成

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中&#xff0c;然后發布到任…

VC6.0詳細教程

1 編制并運行一個簡單程序 1.1 編制并運行程序的“四步曲”1.2 工程(PROJECT)以及工程工作區(PROJECT WORKSPACE)1.3 啟動并進入VC6的集成開發環境1.4 創建工程并輸入源程序代碼(1)新建一Win32 Console Application工程(2)在工作區窗口中查看工程的邏輯架構(3)在工程中新建C源…

vim搜索替換工具

1、ag.vim(查找工具)安裝 在vimrc中添加 Plug rking/ag.vim 使用 :Ag 你要查找的內容 e open file and close the quickfix window. o open file (same as enter). go preview file (open but mainta…

JAVA好學嗎?工資待遇怎么樣?

時代的進步也離不開互聯網的推動&#xff0c;互聯網的發展已經形成了一種趨勢&#xff0c;而在這種大環境下我們不應該抗拒&#xff0c;如果自身條件允許&#xff0c;加入進來未嘗不是一個好的選擇。而在計算機行業內&#xff0c;JAVA的火爆毋庸自疑&#xff0c;很多人都意識到…