其他分享
首页 > 其他分享> > 枚举、联合、大小端的简单应用

枚举、联合、大小端的简单应用

作者:互联网

枚举

-----------------------【列举】

*枚举类型的定义

> //枚举
enum Day
{
	Mon,				  //0
	Tues,					 //1
	Wed,					//2
	Thur,					//3
	Fri,					//4
	Sat,				    //5
	Sun						//6
};
//enum Day是枚举类型,{ }里面的内容是枚举类型可能的取值,叫做  枚举常量
//枚举常量默认值是从0开始,一次递增1;在定义的时候也可以赋初值
//eg:在定义的时候赋初值,后面会依次递增1
enum colour
{
	Red,					//0
	Orange,					//1
	Yellow = 5,				//5
	Green,					//6
	Blue,					//7
};
int  main()
{
	printf("enum Day:\n");
	printf("%d\n", Mon);			//0
	printf("%d\n", Tues);			//1	
	printf("%d\n", Wed);			//2	
	printf("%d\n", Thur);			//3
	printf("%d\n", Fri);			//4
	printf("%d\n", Sat);			//5	
	printf("%d\n", Sun);			//6
	printf("enum colour:\n");
	printf("%d\n", Red);			//0
	printf("%d\n", Orange);			//1
	printf("%d\n", Yellow);			//5
	printf("%d\n", Green);			//6
	printf("%d\n", Blue);			//7
	system("pause");
	return 0;
}

【为什么要使用枚举?】

枚举的优点:
1.增加代码的可读性和可维护性
2.和#define定义的标识符比较枚举有类型检查,更加严谨
3.防止命名污染(封装)
4.便于调试
5.使用方便,一次可以定义多个常量

联合(共用体)

***联合类型的定义:联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员共用同一块空间(所以,联合叫做共用体)

联合体类型的定义:
在这里插入图片描述

联合体的特点:联合的成员是共用同一块内存空间的。一个联合变量的大小至少是最大成员的大小。

union Un
{
	int i;
	char c;
};
//内部成员中的最大成员的大小是:int-----4个字节
//内部成员的最大对齐数是:int------4
//4%4==0
//联合体的大小是:4
union Un un;
int main()
{
	printf("%d\n", &(un.i));			//3572052
	printf("%d\n", &(un.c));			//3572052
	//联合体内部的所有元素共用同一块内存,并且都是从低地址开始开辟
	un.i = 0x11223344;
	un.c = 0x55;
	printf("%x\n", un.i);				//1122334455
	system("pause");					//所以,计算机存储方式是按照小端方式存储的
	return 0;
}

上面代码的图解:

1.计算机按照小端方式存储
在这里插入图片描述
2.计算机按照大端方式存储
在这里插入图片描述

联合大小的计算
1.联合的大小至少是最大成员的大小
2.当成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍
(联合体要内存对齐,联合体最终大小时:整除内部成员最大的对齐数)

//联合体大小计算:
union Un1
{
	char c[5];					//最大对齐数:1				大小:5
	int i;						//最大对齐数:4				大小:4
};
//最大成员的大小:5
//5+3才能满足可以整除最大对齐数4
//所以,联合体的总大小是:8
union Un2
{
	short c[7];				 //最大对齐数:2		    	大小:14
	int i;					 //最大对齐数:4				大小:4
};
//最大成员的大小:14
//14+2才能满足可以整除最大对齐数4
//所以,联合体的总大小是:16
int main()
{
	printf("%d\n", sizeof(union Un1));				//8
	printf("%d\n", sizeof(union Un2));				//16
	system("pause");
	return 0;
}

大小端

大小端模式的介绍:
大端存储模式:一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。(大小大:高地址、低位、大端)
小端存储模式:一个数据的低位字节序的内容放在低地址处,高位字节序存的内容放在高地址处(小小小:低位、低地址、小端)

标签:int,端的,联合体,枚举,应用,printf,大小,对齐
来源: https://blog.csdn.net/weixin_51062428/article/details/110231944