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

C++中的枚舉enum類型使用示例詳解

 更新時間:2024年08月22日 11:44:09   作者:程序員趙大寶  
枚舉和類相似,能夠定義一種新的數(shù)據(jù)類型,不同的是,枚舉是將一組整形常量組織在一起,所以和類的使用方法有一些類似之處,這篇文章主要介紹了C++中的枚舉enum類型使用示例詳解,需要的朋友可以參考下

一.什么是枚舉enum(WHAT)

枚舉(enumeration)和類相似,能夠定義一種新的數(shù)據(jù)類型,不同的是,枚舉是將一組整形常量組織在一起,所以和類的使用方法有一些類似之處。

二.使用枚舉enum的場景(WHEN and WHERE)

實際中經(jīng)常使用枚舉來做數(shù)據(jù)的標識,可以實現(xiàn)對數(shù)據(jù)的分類,打個比方類似于用Ture和False區(qū)分是與非,而枚舉也可以在此基礎上也用整形常量的方式對數(shù)據(jù)進行更多的分類。

三.如何使用枚舉enum(HOW)

1)枚舉的定義

1.不限定作用域的枚舉

enum color
	{
		RED,
		GREEN,
		BLUE
	};

2.限定作用域的枚舉

在enum后面加關鍵字class或者struct

enum class color
	{
		RED,
		GREEN,
		BLUE
	};

3.二者區(qū)別 

解決枚舉值重名的問題,保持代碼的可讀性

//定義兩種枚舉
	enum class color_inner
	{
		RED,
		GREEN,
		BLUE
	};
	enum color_out
	{
		RED,
		GREEN,
		BLUE
	};
//聲明并賦值
color_out backColor = RED; //正確
color_inner forntColor = RED; //錯誤,默認使用了out中的RED,沒有指定作用域
color_out backColor = color_out::RED; //正確,out也可以顯示指定作用域
color_inner forntColor = color_inner::RED;  //正確,inner必須指定作用域

2)枚舉的初始化

1.默認情況下,枚舉值從0開始,依次加1

enum color
	{
		RED,  //默認是0
		GREEN, //默認是1
		BLUE  //默認是2
	};

2.手動指定枚舉值

a.可以全部指定

enum color
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

b.可以部分指定,未被初始化的枚舉值的值默認將比其前面的枚舉值大1

enum color
	{
		RED=2,  
		GREEN,  //默認值是3,比前一個多1
		BLUE=7  
	};

c.可以重復指定

enum color
	{
		RED=8,  
		GREEN=5, 
		BLUE=8  //重復指定
	};

3)指定枚舉類型 

C++11中,還可以指定給枚舉類型賦值的整數(shù)類型,在enum的名字后面加上冒號以及指定的類型,限定作用域枚舉默認為32位整形,在某些情況下,甚至沒必要用到32位,為了節(jié)省開銷,甚至可以用8位整形unsigned char,將類型指定成后,枚舉變量變成了8位整型,減少了內存使用。不限定作用域的枚舉類型,其成員不存在默認類型,只需要知道潛在類型是足夠大的,肯定能容納枚舉值就行。

需要注意的是,不能指定為float或者double等類型,因為枚舉量必須是一個整數(shù),float和double都不是整數(shù)。

enum color:unsigned long
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

4)聲明枚舉對象

a.先聲明變量,再對變量賦值

#include <iostream>
using namespace std;
int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	};
	enum color backColor, frontColor, innerColor;
	backColor = RED;
	frontColor = GREEN;
	innerColor = BLUE;
	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

b.聲明變量的同時賦初值

#include <iostream>
using namespace std;
int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	};
	enum color backColor = RED, frontColor = GREEN, innerColor = BLUE;
	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

c.定義類型的同時聲明變量,然后對變量賦值

#include <iostream>
using namespace std;
int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	}backColor, frontColor, innerColor;
	backColor = RED;
	frontColor = GREEN;
	innerColor = BLUE;
	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

d.類型定義,變量聲明,賦初值同時進行

#include <iostream>
using namespace std;
int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	}backColor = RED, frontColor = GREEN, innerColor = BLUE;
	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

5)枚舉對象賦值問題

a.不能將非枚舉量賦給枚舉變量,能將枚舉量賦給非枚舉變量,因為枚舉量是符號常量,編譯器會自動把枚舉量轉換為int類型

int a;
a=RED;

b.枚舉變量不能進行算術運算,對于枚舉,只定義了賦值運算符,沒有為枚舉定義算術運算,錯誤的算數(shù)計算會導致范圍超限問題

RED++;  //錯誤
RED=GREEN+BLUE;  //錯誤

c.賦值超限問題

backColor = color(2); //等同于backColor = BLUE;
backColor = color(10);  //錯誤,超過color元素上限

6)枚舉的取值范圍

上限:需要知道枚舉量的最大值。找到大于這個最大值的、最小的2的冪,將它減去1,得到的便是取值范圍的上限

enum color:unsigned long
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  //上限是8-1=7
	};
    backColor = color(7); //所以可以取到7

下限:枚舉量的最小值不小于0,則枚舉下限取0;枚舉量的最小值小于0,則枚舉下限是 小于最小枚舉量的 最大的2的冪,加上1。

enum color:unsigned long
	{
		RED=-1,  
		GREEN=-5, 
		BLUE=-7  //下限是-8+1=-7
	};
    backColor = color(-7); //所以可以取到-7

四.枚舉enum的應用

1.常和Switch搭配使用

enum color{RED, GREEN, BLUE}backColor=RED;
switch (backColor)
{
  case RED:{...;break;}
  case GREEN:{...;break;}
  case BLUE:{...;break;}
  default:break;
}

2.if...else搭配使用

enum color{RED, GREEN, BLUE};
color backColor=RED;
void SetColor(color color)
{
    backColor = color ;
}
if(backColor==RED)
{
    cout<<"color is RED"<<endl;
}
else if(backColor==GREEN)
{
    cout<<"color is GREEN"<<endl;
}
else if(backColor==BLUE)
{
    cout<<"color is BLUE"<<endl;
}
else
{
    cout<<"color is OTHER"<<endl;
}

到此這篇關于C++中的枚舉enum類型使用示例詳解的文章就介紹到這了,更多相關C++ 枚舉enum類型內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 配合ffmpeg接口獲取視頻音頻媒體信息詳解

    配合ffmpeg接口獲取視頻音頻媒體信息詳解

    這篇文章主要為大家介紹了配合ffmpeg接口獲取視頻音頻媒體信息詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 基于C語言實現(xiàn)簡單五子棋游戲

    基于C語言實現(xiàn)簡單五子棋游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡單五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++訪問std::variant類型數(shù)據(jù)的幾種方式小結

    C++訪問std::variant類型數(shù)據(jù)的幾種方式小結

    std::variant是?C++17中引入的一個新的類模板,提供了一種存儲不同類型的值的方式,本文主要介紹了C++訪問std::variant類型數(shù)據(jù)的幾種方式小結,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • C語言實現(xiàn)打印數(shù)組以及打印注意事項說明

    C語言實現(xiàn)打印數(shù)組以及打印注意事項說明

    這篇文章主要介紹了C語言實現(xiàn)打印數(shù)組以及打印注意事項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C語言中操作字符串的函數(shù)詳解

    C語言中操作字符串的函數(shù)詳解

    這篇文章主要為大家詳細介紹了C語言中操作字符串的函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++函數(shù)對象詳解附帶實例

    C++函數(shù)對象詳解附帶實例

    這篇文章主要介紹了C++函數(shù)對象詳解附帶實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • QT+OpenGL實現(xiàn)簡單圖形的繪制

    QT+OpenGL實現(xiàn)簡單圖形的繪制

    這篇文章主要為大家詳細介紹了如何利用QT和OpenGL實現(xiàn)簡單圖形的繪制,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • Linux c中define的用法小結

    Linux c中define的用法小結

    學習了這么多年C語言,說實話對宏自以為了如指掌了,沒想到看內核代碼的時候還是那么吃力,設備驅動代碼中有很多這樣或者那樣的宏定義,各種define,在學習的過程中將C語言中所出現(xiàn)的#define定義整理總結了一下,供大家借鑒和學習。
    2016-01-01
  • Qt實現(xiàn)驗證碼相關功能的代碼示例

    Qt實現(xiàn)驗證碼相關功能的代碼示例

    驗證碼的原理基于人類視覺和計算機視覺的差異性,通過給用戶顯示一些難以被機器識別的圖形或文字,讓用戶進行人機交互,確認自己的身份,這樣可以有效保護網(wǎng)站安全,所以本給大家介紹了Qt實現(xiàn)驗證碼相關功能的代碼示例,感興趣的朋友可以參考下
    2024-01-01
  • c++ 防止頭文件重復引入的三種方法

    c++ 防止頭文件重復引入的三種方法

    這篇文章主要介紹了c++ 防止頭文件重復引入的三種方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下
    2021-02-02

最新評論

凤山县| 永福县| 七台河市| 明溪县| 宁阳县| 西和县| 商水县| 兴宁市| 白沙| 古丈县| 英超| 林西县| 黑龙江省| 安多县| 阜城县| 靖安县| 沿河| 崇州市| 通州市| 元氏县| 澄江县| 金堂县| 文登市| 孙吴县| 镇平县| 微山县| 喜德县| 金门县| 望都县| 招远市| 大足县| 桃江县| 揭阳市| 新泰市| 桃园市| 青海省| 定安县| 和林格尔县| 乌什县| 汶上县| 乐清市|