一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言數據類型枚舉enum全面詳解示例教程

C語言數據類型枚舉enum全面詳解示例教程

2022-02-13 16:05高郵吳少 C/C++

生活中有很多地方會用到枚舉,比如一周有7天,可以一一枚舉;性別有男、女...等等都可以可以一一枚舉,今天來和筆者一起學習一下c語言枚舉吧

一、枚舉類型的定義

enum Day//enum Day是一種類型
{
	Mon,//周一到周日這些叫枚舉的可能取值,也叫枚舉常量
	Tue,
	Wed,
	Thur,
	Fri,
	Sat,
	Sun,
};

上述代碼定義的enum Day是一種枚舉類型,{}中內容是枚舉類型的可能取值,也可叫作枚舉常量。
這些枚舉常量都是有值的,默認從0開始,依次往后遞增1,如果你愿意賦值也是可以的。

代碼如下:

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red,
	green,
	blue
};
int main()
{
	printf("%d\n", red);
	printf("%d\n", green);
	printf("%d\n", blue);
}

不賦初值打印0, 1,2

C語言數據類型枚舉enum全面詳解示例教程

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red=2,
	green,
	blue=6
};
int main()
{
	printf("%d\n", red);
	printf("%d\n", green);
	printf("%d\n", blue);
}

賦初值后打印初值內容,如果你有一個沒有賦值,會緊接上一個賦值內容+1
這里green并沒有賦值,但我們知道red是2,按照枚舉規則,green會在red的基礎上加1變成3,注意,blue是有賦值的,所以blue不需要在green的基礎上加1,blue就是6

C語言數據類型枚舉enum全面詳解示例教程

注意:因為是枚舉{}內的叫作枚舉常量,常量是不能改的,比如你在main函數里進行賦值操作,red=9;這個鐵鐵的會報錯,一定要區分枚舉初始化和賦值的區別。

 

二、枚舉類型的使用

2.1創建變量

我們前面說過,enum Day、enum Color這種叫作枚舉類型,既然它是類型,它就可以創建變量,

代碼如下:

#include<stdio.h>
enum Color//enum Color是一種類型
{
	red,
	green,
	blue
};
int main()
{
	enum Color a = 1;
	enum Color b = green;
}

我們用枚舉類型創建了變量a和b,這里需要注意的是,把1賦給a,在c語言環境下編譯器不會報錯,但c++下就會出現問題,編譯器會認為1是一個整形,你賦給一個枚舉類型顯然是有問題的。所以我們這里最好把枚舉可能取值賦給枚舉變量。

2.2一些優點

到這里大家可能會有一些疑惑,我們可以用#define來定義常量,為什么要用枚舉呢?我們來看一下它們的區別:

代碼如下(示例):

#define red 2
#define green 4
#define blue 8

enum Color
{
	Red,
	Green,
	Blue
};

首先由2.1知,c++環境下,枚舉類型會對其他類型的賦值進行警告,而#define定義的常量是沒有類型的;

第二就是防止命名污染,舉個栗子:#define red 2,這是全局范圍命名red為2,那假如你其他地方用到2這個數字,到時候到底是2本身還是red的意思?而枚舉定義的red是枚舉類型的一個可能取值,不會影響到其他數據;

第三,枚舉是可以調試的,調試的過程中你大可輸入枚舉類型創建的變量,但是#define red 2這種,red如果在代碼中會被自動替換為2,你無法用red進行監視
第四,就是可以一次定義多個枚舉常量

 

總結

今天我們學完了枚舉的相關定義,枚舉類型的使用以及枚舉相對于#define定義的區別,下一期筆者還會繼續更新C語言聯合(共用體相關知識),期待你的關注,預祝讀者學習愉快!更多關于C語言enum枚舉數據類型的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/m0_57180439/article/details/120406303

延伸 · 閱讀

精彩推薦
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 4p高h三男一女 | 疯狂伦交1一6小说 | 高清一区二区 | 国产精品久久国产三级国电话系列 | 荡娃艳妇有声小说 | 欧美yw193.c㎝在线观看 | 免费视频精品一区二区三区 | 91精品国产91久久久久 | 亚洲第一网站免费视频 | 免费观看的毛片 | 好看的亚洲视频 | ass亚洲熟妇毛茸茸pics | 韩国男女做性全过程视频 | 欧美日韩1区 | 国产在线拍 | 久久午夜一区二区 | 国产伦精品一区二区三区免费观看 | 黑帮少爷爱上我第8集在线观看 | 国产精品久久久久久久久久久威 | 99手机在线视频 | 97在线资源站 | 五月婷婷丁香在线视频 | 99精品免费视频 | 黑人艹逼 | 好吊色网站 | 视频一区二区三区在线观看 | 亚洲色图第一页 | 国产精品亚洲片在线观看麻豆 | 1024亚洲精品国产 | 嫩草蜜桃 | 图片专区小说专区卡通动漫 | 天天射久久 | 日本美女动态图片 | a级免费在线观看 | 午夜国产福利视频一区 | 精品AV无码一二三区视频 | 国产二区视频 | 亚洲欧美午夜 | 91视频www| 男人的天堂视频 | 人与动人物性行为zozo共患病 |