
#include "stdio.h" enum Season { spring, summer=100, fall=96, winter ,winter1 }; typedef enum { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } Weekday; void main() { Weekday today ; printf("%d bytes\n", sizeof(spring)); printf("%d bytes\n", sizeof( Saturday )); printf("%d bytes\ \n", sizeof( today )); } 1. sizeof( Saturday )的大小是4; 2.sizeof( today )的大小也是4; Saturday只是一个枚举元素啊,而today是一个枚举变量,为什么他俩所占的内存空间大小是一样的? |
---比如
int a = 6;
在x86系统中,数字6占用4个字节,int是4个字节,变量a也是4个字节。这里可以把6理解为整形元素,a是一个整形变量。
枚举毕竟和一般变量不同,跟编译器相关。
如果使用keil,那么枚举的大小可能是1个字节,最大可以是4个字节,这要在编译器里面设置。
我试试keil
Weekday today ; 只是表示today 是weekday中的某一个值(位宽为4),此值与CPU和编译环境相关
Saturday,则是具体数5,他的位宽就是4.