enum
в C работает как целое число, поэтому его можно принудительно ввести в любое значение с помощью функции чтения любого типа, получающей указатель или непосредственно приводящей его к целочисленным типам.
Если перечисление имееттолько последовательные значения, некоторые программы имеют значение enum max
.Они могут иметь явные значения или неявные значения, которые всегда начинаются с 0
и увеличиваются последовательно.Таким образом, они могут просто проверить, находится ли значение в допустимом диапазоне (от 0 до max - 1
), а не проверять его для каждого допустимого значения.
typedef enum foo {
foo_a,
foo_b,
foo_c,
foo_max //last
} foo;
int main(void)
{
foo x = (foo)88; // from somewhere
if (x >= 0 && x < foo_max)
printf("valid\n");
else printf("invalid\n");
}