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

C語(yǔ)言中枚舉與聯(lián)合體的使用方法(enum union)

 更新時(shí)間:2021年09月24日 09:08:25   作者:呋喃吖  
枚舉的意思就是列舉,將每一個(gè)可能的取值都進(jìn)行一一列舉,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中枚舉與聯(lián)合體的使用方法,需要的朋友可以參考下

enum的定義

枚舉顧名思義就是一一列舉,把可能的取值一一列舉。

枚舉的使用方式

//定義一個(gè)枚舉Color的類型

enum Color // enum Color 是一個(gè)類型
{
	RED,  //逗號(hào)結(jié)尾
	GREEN,
	BLUE // 最后一個(gè)成員沒(méi)有逗號(hào)沒(méi)有分號(hào)
};
int main()
{
	printf("%d",RED);//0
	printf("%d",GREEN);//1
	printf("%d",BLUE);//2
	return 0;
}

{}中的內(nèi)容是枚舉類型的可能取值,也叫 枚舉常量 。 這些可能取值都是有值的,默認(rèn)從0開(kāi)始,一次遞增1,當(dāng)然在定義的時(shí)候也可以賦初值。從賦值的地方開(kāi)始,后面的枚舉常量沒(méi)賦值的話,也是從最后一次枚舉常量賦值的地方賦值地方開(kāi)始依次遞增1數(shù)值

enum Color//顏色
{
	RED=1,
	GREEN=2,
	BLUE=4
};
int main()
{
	printf("%d",RED);//1
	printf("%d",GREEN);//2
	printf("%d",BLUE);//4
	return 0;
}

或者這樣

enum Color//顏色
{
	RED=10,
	GREEN,
	BLUE
};
int main()
{
	printf("%d",RED);//10
	printf("%d",GREEN);//11
	printf("%d",BLUE);//12
	return 0;
}

當(dāng)然枚舉是類型還可以定義變量:

這個(gè)變量可以賦值枚舉常量的可能取值

enum Color//顏色
{
	RED=10,
	GREEN,
	BLUE
};
int main()
{
	enum Color c = RED; //定義枚舉變量,給它賦值枚舉常量的可能取值RED
	printf("%d",c); //10
	c = GREEN;
	printf("%d",c); //11
		//	注意點(diǎn),枚舉常量是常量,所以不可以在使用過(guò)程中修改他的值
		//RED = 3; //是錯(cuò)誤的
	return 0;
}

enum對(duì)比#define宏常量的好處

枚舉的優(yōu)點(diǎn):

  1. 增加代碼的可讀性和可維護(hù)性;
  2. 和#define定義的標(biāo)識(shí)符比較枚舉有類型檢查,更加嚴(yán)謹(jǐn);
  3. 防止了命名污染(封裝);
  4. 便于調(diào)試;
  5. 使用方便,一次可以定義多個(gè)常量。

union的定義

union 是共用體,它的意思就是union 里面成員變量的集合是公用內(nèi)存空間的。

比如

//聯(lián)合類型的聲明
union Un
{
char c;
int i;
};
//聯(lián)合變量的定義
union Un un;
//計(jì)算連個(gè)變量的大小
printf("%d\n", sizeof(un)); //結(jié)果為4

成員變量 c占用一個(gè)字節(jié),成員變量i占用4個(gè)字節(jié),但是又一個(gè)字節(jié)和成員變量重疊了,這就是共用體

聯(lián)合體大小的計(jì)算

聯(lián)合的成員是共用同一塊內(nèi)存空間的,這樣一個(gè)聯(lián)合變量的大小,至少是最大成員的大小
當(dāng)最大成員大小不是最大對(duì)齊數(shù)的整數(shù)倍的時(shí)候,就要對(duì)齊到最大對(duì)齊數(shù)的整數(shù)倍。

union Un1
{
	char c[5];
	int i;
};
union Un2
{
	short c[7];
	int i;
};
	//下面輸出的結(jié)果是什么?
	printf("%d\n", sizeof(union Un1)); //結(jié)果為8
	printf("%d\n", sizeof(union Un2));//結(jié)果為16

分析:

  • 對(duì)于Un1,我們知道Un1的最大對(duì)齊數(shù)是4,假如沒(méi)有按對(duì)齊數(shù)的話,其大小為5,有對(duì)齊數(shù),就變?yōu)?;
  • 對(duì)于Un2,我們知道Un2的最大對(duì)齊數(shù)是4,假如沒(méi)有對(duì)齊數(shù)的話,其大小為14,有對(duì)齊數(shù),就變?yōu)?6;

聯(lián)合體配合算大小端的問(wèn)題

記得之前用類型轉(zhuǎn)化的方式計(jì)算得到計(jì)算機(jī)是大小端,現(xiàn)在我們可以用聯(lián)合體也得到計(jì)算機(jī)的大小端;

類型轉(zhuǎn)化得到大小端的方式

int check()
{
	int a = 1; // 0x 00 00 00 01
	//低地址 ----------------------->高地址
	//小端:01 00 00 00
	//大端:00 00 00 01
	return *(char*)&a;
}
int main()
{
	int ret = check();
	
	if(ret == 1)
		printf("小端模式");
	else
		printf("大端模式");
	
	return 0;
}

聯(lián)合體的方式

union Un
{
	char c;
	int i;	
};
int cheak()
{
	u.i = 1;
	//低地址 ----------------------->高地址
	//小端:01 00 00 00
	//大端:00 00 00 01
	
	//如果是小端,返回1,不是返回0
	
	return u.c;	
}
int main()
{
	int ret = check();
	
	if(ret == 1)
		printf("小端模式");
	else
		printf("大端模式");
	
	return 0;
}

總結(jié)

到此這篇關(guān)于C語(yǔ)言中枚舉與聯(lián)合體使用的文章就介紹到這了,更多相關(guān)C語(yǔ)言枚舉與聯(lián)合體用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問(wèn)題

    關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問(wèn)題

    這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C++超詳細(xì)講解邏輯操作符

    C++超詳細(xì)講解邏輯操作符

    在C語(yǔ)言中,邏輯運(yùn)算符有&&、||、!;&&表示“與”的意思,需要兩端的表達(dá)式的值都為true,該式的值才為true。||表示“或”的意思,兩端的表達(dá)式的值只要有一端為true,該式的值就為true。!表示“非”的意思,將該式的真值換成相反的真值,即false和true互換
    2022-06-06
  • C++標(biāo)準(zhǔn)C函數(shù)在各平臺(tái)編譯結(jié)果都相同

    C++標(biāo)準(zhǔn)C函數(shù)在各平臺(tái)編譯結(jié)果都相同

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)C函數(shù)在各平臺(tái)編譯結(jié)果都相同,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Qt圖形圖像開(kāi)發(fā)之曲線圖模塊QCustomplot庫(kù)生成靜態(tài)、動(dòng)態(tài)曲線詳細(xì)教程圖解

    Qt圖形圖像開(kāi)發(fā)之曲線圖模塊QCustomplot庫(kù)生成靜態(tài)、動(dòng)態(tài)曲線詳細(xì)教程圖解

    這篇文章主要介紹了Qt圖形圖像開(kāi)發(fā)之曲線圖模塊QCustomplot庫(kù)畫靜態(tài)、動(dòng)態(tài)曲線詳細(xì)教程圖解,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法

    C語(yǔ)言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法

    這篇文章主要介紹了C語(yǔ)言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法,分別是setsockopt()函數(shù)和getsockopt()函數(shù)的使用介紹,需要的朋友可以參考下
    2015-09-09
  • Opencv學(xué)習(xí)教程之漫水填充算法實(shí)例詳解

    Opencv學(xué)習(xí)教程之漫水填充算法實(shí)例詳解

    這篇文章主要給大家介紹了Opencv學(xué)習(xí)教程之漫水填充算法的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例

    Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例

    本文主要介紹了Qt編寫地圖遷徙圖的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語(yǔ)言中的奇技淫巧

    C語(yǔ)言中的奇技淫巧

    學(xué)習(xí)C語(yǔ)言的過(guò)程中,總會(huì)遇到很多令人眼前一亮的代碼,尤其是你寫了幾十行的代碼,別人只用了簡(jiǎn)單幾行的遞歸就實(shí)現(xiàn)的功能。下面我就總結(jié)幾個(gè)C語(yǔ)言中 比較新手向的代碼。讓你有一種woc!還能這么寫的想法
    2018-08-08
  • C++中std::shuffle的使用小結(jié)

    C++中std::shuffle的使用小結(jié)

    std::shuffle是C++標(biāo)準(zhǔn)庫(kù)中的一個(gè)函數(shù),用于對(duì)容器中的元素進(jìn)行隨機(jī)排列,本文主要介紹了C++中std::shuffle的使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    這篇文章主要介紹了C++ Template函數(shù)模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論

海原县| 耒阳市| 雷山县| 皮山县| 滦南县| 哈巴河县| 雷山县| 杭州市| 高阳县| 赤峰市| 井研县| 海伦市| 三亚市| 鹿泉市| 鹰潭市| 宜章县| 通渭县| 永善县| 阜城县| 怀宁县| 海丰县| 凤翔县| 克山县| 新田县| 叙永县| 黎平县| 乐都县| 绩溪县| 旬阳县| 长沙市| 凤台县| 福贡县| 民乐县| 五华县| 滨海县| 花垣县| 盐亭县| 长治市| 仙游县| 清河县| 如东县|