欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一.什么是枚舉enum(WHAT)

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

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

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

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

1)枚舉的定義

1.不限定作用域的枚舉

enum color
	{
		RED,
		GREEN,
		BLUE
	};

2.限定作用域的枚舉

在enum后面加關(guān)鍵字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; //錯(cuò)誤,默認(rèn)使用了out中的RED,沒有指定作用域
color_out backColor = color_out::RED; //正確,out也可以顯示指定作用域
color_inner forntColor = color_inner::RED;  //正確,inner必須指定作用域

2)枚舉的初始化

1.默認(rèn)情況下,枚舉值從0開始,依次加1

enum color
	{
		RED,  //默認(rèn)是0
		GREEN, //默認(rèn)是1
		BLUE  //默認(rèn)是2
	};

2.手動(dòng)指定枚舉值

a.可以全部指定

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

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

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

c.可以重復(fù)指定

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

3)指定枚舉類型 

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

需要注意的是,不能指定為float或者double等類型,因?yàn)槊杜e量必須是一個(gè)整數(shù),float和double都不是整數(shù)。

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

4)聲明枚舉對(duì)象

a.先聲明變量,再對(duì)變量賦值

#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.聲明變量的同時(shí)賦初值

#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.定義類型的同時(shí)聲明變量,然后對(duì)變量賦值

#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.類型定義,變量聲明,賦初值同時(shí)進(jìn)行

#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)枚舉對(duì)象賦值問題

a.不能將非枚舉量賦給枚舉變量,能將枚舉量賦給非枚舉變量,因?yàn)槊杜e量是符號(hào)常量,編譯器會(huì)自動(dòng)把枚舉量轉(zhuǎn)換為int類型

int a;
a=RED;

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

RED++;  //錯(cuò)誤
RED=GREEN+BLUE;  //錯(cuò)誤

c.賦值超限問題

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

6)枚舉的取值范圍

上限:需要知道枚舉量的最大值。找到大于這個(gè)最大值的、最小的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的應(yīng)用

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;
}

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

相關(guān)文章

  • 使用c++11 constexpr時(shí)遇到的坑詳解

    使用c++11 constexpr時(shí)遇到的坑詳解

    c++11 constexpr將變量聲明為constexpr類型以便由編譯器來(lái)驗(yàn)證變量是否是一個(gè)常量表達(dá)式,這篇文章主要給大家介紹了關(guān)于使用c++11 constexpr時(shí)遇到的坑,需要的朋友可以參考下
    2021-05-05
  • C++實(shí)現(xiàn)LeetCode(122.買股票的最佳時(shí)間之二)

    C++實(shí)現(xiàn)LeetCode(122.買股票的最佳時(shí)間之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(122.買股票的最佳時(shí)間之二),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)例詳解lambda表達(dá)式的使用

    C++實(shí)例詳解lambda表達(dá)式的使用

    Lambda表達(dá)式是現(xiàn)代C++在C ++ 11和更高版本中的一個(gè)新的語(yǔ)法糖 ,在C++11、C++14、C++17和C++20中Lambda表達(dá)的內(nèi)容還在不斷更新。 lambda表達(dá)式(也稱為lambda函數(shù))是在調(diào)用或作為函數(shù)參數(shù)傳遞的位置處定義匿名函數(shù)對(duì)象的便捷方法
    2022-05-05
  • C語(yǔ)言掃雷排雷小游戲?qū)崿F(xiàn)全程

    C語(yǔ)言掃雷排雷小游戲?qū)崿F(xiàn)全程

    本篇我將帶領(lǐng)大家攻克掃雷游戲各處難點(diǎn),讓你寫掃雷不在困難,我們的掃雷游戲可以實(shí)現(xiàn)標(biāo)記雷的功能和展開一片的功能。我們將分三個(gè)文件為大家介紹,分別為test.c,game.h和game.c
    2022-05-05
  • 淺談哈希表存儲(chǔ)效率一般不超過50%的原因

    淺談哈希表存儲(chǔ)效率一般不超過50%的原因

    下面小編就為大家?guī)?lái)一篇淺談哈希表存儲(chǔ)效率一般不超過50%的原因。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-01-01
  • 基于MATLAB神經(jīng)網(wǎng)絡(luò)圖像識(shí)別的高識(shí)別率代碼

    基于MATLAB神經(jīng)網(wǎng)絡(luò)圖像識(shí)別的高識(shí)別率代碼

    今天小編就為大家分享一篇關(guān)于基于MATLAB神經(jīng)網(wǎng)絡(luò)圖像識(shí)別的高識(shí)別率代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 解析c語(yǔ)言switch中break語(yǔ)句的具體作用

    解析c語(yǔ)言switch中break語(yǔ)句的具體作用

    以下是對(duì)c語(yǔ)言switch中break語(yǔ)句的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來(lái)參考下
    2013-07-07
  • C++歸并排序算法實(shí)例

    C++歸并排序算法實(shí)例

    這篇文章主要介紹了C++歸并排序算法實(shí)例,本文先是介紹了什么是歸并排序,然后給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-10-10
  • C++使用回溯法解決黃金礦工問題

    C++使用回溯法解決黃金礦工問題

    在矩陣中考察回溯算法,分為任意起點(diǎn)、左上角開始等情況。從而有不同的模板,其實(shí)區(qū)別就是直接開始還是每個(gè)坐標(biāo)都去嘗試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評(píng)論