在c.color = 1这样的操作中,将int类型分配给枚举类型是否合法? 我运行了这段代码,似乎它确实将c.color设置为BLUE,因为BYE被打印出来了,但我想知道这是否真正正确地设置了枚举。
typedef enum {
GREEN = 0,
BLUE
}COLOR;
typedef struct{
COLOR color;
}COLORS;
int main()
{
COLORS c;
c.color = 1;
if(c.color == BLUE)
{
printf("BYE");
}
}
enum
除了是一个整数类型外,还创建了全局常量,可以使用方便的常量来设置枚举中的任何一个值,而不是使用魔术数字,例如enum direction { NORTH, WEST, SOUTH, EAST }; direction = SOUTH; switch direction { case NORTH: /* do suff */ break; case WEST: /* do stuff */ break; ...
您可以使用enum
声明全局常量,而不管您是否在代码中稍后使用enum
,例如enum { MAXC = 128, MAXN = 512 };
。 - David C. Rankin