MSP430之枚举变量大小
一直都很好奇枚举变量到底是如何让占用存储空间的,网上好多文章都说是占用int字节的大小,但是今天测试了一下,发现不是那么回事。
- 操作系统:WIN7 64bit
- IDE:IAR 5.5
- 实验平台: MP430F4793
先说结论:
实际使用发现枚举变量的大小并不是固定不变的,而是跟随成员的取值范围而变化,
并且枚举变量为2个字节(正好是MSP430字节对齐的大小)时,存储占用反而变小。
下面是编译后的结果:
初始情况:
成员取值范围UINT8足以满足,所以是一个字节;
另外,增加成员并不会改变编译结果
给最后一个成员赋值65535:
此时,成员的取值范至少需要两个字节才能存储,所以可以看到枚举变量的大小是2字节,另外,编译后所占的存储空间反而变小了。猜测可能和字节对齐有关系。
将第一个成员赋值-1:
-1到65535,2个字节已经不够了,所以枚举变量扩大到了4字节。
赋值154554546545:
枚举变量大小到了8字节。