Присвоение недопустимого значения для переменной перечисления typedef - PullRequest
0 голосов
/ 29 июня 2011

Я помню, как читал где-то в ТАК, говоря, если:

typedef enum TEST {
   zero,
   one,
   two,
   unknown
};

Затем, выполнение TEST test1 = 5 фактически заставит его присвоить значение unknown, в данном случае будет 3. Я написал и протестировал, но он не присваивал этому значению, так что зачем неизвестное значение в конце перечисления?

1 Ответ

1 голос
/ 29 июня 2011

TEST test1 = 5 would actually make it assign to unknown неверно (как уже указано 'Oli').

Перечисление состоит из набора именованных целочисленных констант.Переменная с типом перечисления хранит одно из значений набора перечислений, определенных этим типом.Хотя желательно иметь одно из предварительно определенных значений, но присваивать другое случайное значение isn't illegal.

В большинстве (не во всех) случаях константы enum используются для проверки некоторого параметра, который ожидаетсяиметь некоторый заранее определенный диапазон значений.Например: в сетевом приложении вам, возможно, придется отправлять некоторый msg_id (который является константой enum) с каждым сообщением с одного конца и предпринимать некоторые действия на основе этого msg_id на другом конце.Однако, если полученный msg_id не является одним из предопределенных значений для enum, вы можете установить msg_id = Unknown и вернуть ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...