a
type の変数に間違った値を代入しようとしても、コンパイラが文句を言わないのはなぜ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
andを使用しました。gender
この構文を許可するポイントは何ですか?
つまり、このコードは次のように非常にうまく記述できます。
enum {NO, YES};
enum {MALE, FEMALE};
この構文を許可するポイントは何ですか?
enum answer {NO, YES};
enum gender {MALE, FEMALE};