枚举与联合
枚举
枚举常量 不能赋值
枚举类型的本质是整形 默认从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
枚举与宏
宏也可以用来定义常量
区别
- 枚举可以用来枚举一堆强相关的常量,枚举可以很简单的用来枚举一大堆常量,但是宏所定义的常量不一定有相关性,而且在定义常量时的维护成本较高。
- 而且枚举是一种类型,在编译的时候会进行类型检;宏是基于替换原则,在过程中不会进行检查工作
- 宏的应用场景远大于宏
联合(共用体)
联合体的大小由联合体内最大元素的大小决定,决定之后,所有元素共享空间。在使用的时候,一次只会访问一个元素。
所以以下的运行结果为8(double)。
联合体的内存对齐问题:联合体的最终大小,
要能整除联合体内的最大对齐数,以下最大的元素为7最大对齐数为int型的4字节,所以最终结果为8。
而且在联合体中,每个都是第一位元素,地址均相同相同。
这里要注意大小端储存,改变的是地址最小的字节,所以小端储存时,输出结果为0x11223355
ucPiml占一个字节,ucData0占一个比特位, ucData1占两个比特位,ucData2占三个比特位,memset讲空间全部置0后在对其赋值最后输出。
好了,今天就到这了,总结梳理了一遍,又是对知识的巩固,总会收获更多!