a
当我尝试为类型变量分配不正确的值时,为什么编译器不抱怨enum answer
?
#include <stdio.h>
int main()
{
enum answer {NO, YES};
enum gender {MALE, FEMALE};
enum answer a = 5; /* Assign an invalid value. */
printf("answer: %d\n", a);
a = MALE; /* Assign a value of wrong type */
printf("answer: %d\n", a);
return 0;
}
这是输出:
$ gcc -std=c99 -pedantic -Wall -Wextra enum.c
$ ./a.out
answer: 5
answer: 0
如果enum
不会导致类型检查,那么将语法设置为:
enum [identifier] {enumerator-list}
我使用answer
andgender
作为我的枚举的标识符。允许这种语法有什么意义?
我的意思是这段代码可以很好地写成
enum {NO, YES};
enum {MALE, FEMALE};
允许这种语法有什么意义?
enum answer {NO, YES};
enum gender {MALE, FEMALE};