Почему компилятор не жалуется, когда я пытаюсь назначить неверные значения переменной 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
и gender
как идентификатор моего перечисления. Какой смысл разрешать этот синтаксис?
Я имею в виду, что этот код может быть очень хорошо написан как
enum {NO, YES};
enum {MALE, FEMALE};
В чем смысл этого синтаксиса?
enum answer {NO, YES};
enum gender {MALE, FEMALE};