关于枚举体所占内存空间的大小问题
#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是一个枚举变量,为什么他俩所占的内存空间大小是一样的? 补充:VS2010编译环境! ***Saturday只是一个枚举元素啊,而today是一个枚举变量,为什么他俩所占的内存空间大小是一样的?
---比如
int a = 6;
在x86系统中,数字6占用4个字节,int是4个字节,变量a也是4个字节。这里可以把6理解为整形元素,a是一个整形变量。
枚举毕竟和一般变量不同,跟编译器相关。
如果使用keil,那么枚举的大小可能是1个字节,最大可以是4个字节,这要在编译器里面设置。 moyanming2013 发表于 2016-3-20 16:29
***Saturday只是一个枚举元素啊,而today是一个枚举变量,为什么他俩所占的内存空间大小是一样的?
---比如 ...
我试试keil 支持2楼,同类型的值跟变量类型所占的空间大小应该是一样,否则赋值也不对... 枚举只在编译过程中起作用,限定变量的范围,不在此范围内,则编译时会报警。
Weekday today ; 只是表示today 是weekday中的某一个值(位宽为4),此值与CPU和编译环境相关
Saturday,则是具体数5,他的位宽就是4.
页:
[1]