2020-06-21

枚举与联合

枚举
枚举常量 不能赋值
枚举类型的本质是整形 默认从0开始依次递增
所以一下程序的输出结果为0 1 2 3 4

在这里插入图片描述

也可对枚举常量直接对其赋初值值修改,
若RED=100,则结果为100 101 102 103 104,
若RED=-100,则结果为-100 -99 -98 -97 -96,均是依次递增。但当如以下2情况赋值,则会被分为两段,输出结果为0 1 3 4 5
在这里插入图片描述

枚举与宏
宏也可以用来定义常量

在这里插入图片描述

区别

  1. 枚举可以用来枚举一堆强相关的常量,枚举可以很简单的用来枚举一大堆常量,但是宏所定义的常量不一定有相关性,而且在定义常量时的维护成本较高。
  2. 而且枚举是一种类型,在编译的时候会进行类型检;宏是基于替换原则,在过程中不会进行检查工作
  3. 宏的应用场景远大于宏

联合(共用体)
联合体的大小由联合体内最大元素的大小决定,决定之后,所有元素共享空间。在使用的时候,一次只会访问一个元素。
所以以下的运行结果为8(double)。
在这里插入图片描述
联合体的内存对齐问题:联合体的最终大小,
要能整除联合体内的最大对齐数,以下最大的元素为7最大对齐数为int型的4字节,所以最终结果为8。

在这里插入图片描述
而且在联合体中,每个都是第一位元素,地址均相同相同。
在这里插入图片描述
在这里插入图片描述
这里要注意大小端储存,改变的是地址最小的字节,所以小端储存时,输出结果为0x11223355

在这里插入图片描述
在这里插入图片描述
ucPiml占一个字节,ucData0占一个比特位, ucData1占两个比特位,ucData2占三个比特位,memset讲空间全部置0后在对其赋值最后输出。
在这里插入图片描述

好了,今天就到这了,总结梳理了一遍,又是对知识的巩固,总会收获更多!

猜你喜欢

转载自blog.csdn.net/m0_46657493/article/details/106892984