Enum как работать и зачем нужно

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Что такое enum, зачем нужен enum и другие вопросы по слову enum могут возникнуть при разработке ваших программ и изучении чужих кодов.

  • enum — Это тип перечисление.

В enum записываются константы и каждой новой константе присваивается порядковый номер, чтобы было понятно привожу код C++

C++ enum

В общем, прямым путем вытащить можно только номер элемента, а не строковое значение переменной типа enum. Такой вариант используется если требуется сравнить значения с константами и на основе результатов сравнений создать свое поведение программы. Для хорошего восприятия приведу код

В программе задается один вопрос и пользователь должен ввести ответ. На основе правильности ответа программа срабатывает по разному

Код С++ enum

Здесь показано, что к перечислению можно обращаться двумя способами.
В первом случае обращение идет к имени константы
Во втором случае обращение идет к номеру константы
По описанным комментариям можно увидеть, что в конечном итоге все приводится к эквивалентной и равной записи, где в результате работы переменной присваивается целочисленное значение, а перечисляемые константы служат для удобочитаемости кода и транзитом через них в переменную типа перечисление заносится целочисленное значение. При обращении к имени константы, константа выискивается и если она нашлась, то определяется номер ее позиции. Другими словами enum неявно приводится к типу int

Бывает, что нужно вытащить строковое значение enum по номеру элемента. Напрямую такую операцию выполнить не получится, поэтому приходится использовать обходной путь. Так как enum содержит набор констант, то этот enum можно рассматривать как одномерный массив. Определять массив придется независимо от enum, значения в него прописать точно также как в enum

Код С++ Вытащить строковое значение из enum

Чтобы легче усвоить этот код, нужно хорошо понять ранее приведенный. К тому что я уже писал могу добавить, что для работы со строковыми значениями из enum нет никакого обращение к enum, вместо этого мы обращаемся к отдельному самостоятельному объекту, к массиву, который создали. В последней части кода выполняется цикл, с помощью которого выводятся все значения из нашего массива. А так как значения, записанные в массив равны значениям из enum и порядок у них такой же, то такая запись абсолютна эквивалентна выводу всех строковых значений из перечисления.

Надеюсь, что то что я решил в качестве подопытного объекта взять тип boolean и создать его своими силами — правильный подход к разъяснениям. Количество констант может быть и три и четыре и одна, это определяете вы.
Как вы не можете обозвать константу русскими буквами внутри программы, так же вы не можете обозвать русскими буквами константу внутри перечисляемого типа. Константа есть константа.
Можно переназначить первый порядковые номера в enum. По умолчанию это ноль.

enum boolean {true=100,false} // Теперь порядковый номер true=100, false=101;

Использование перечислений позволяет сделать исходные коды программ более читаемыми
При обращении к переменной типа перечисление по имени константы происходит неявное привидение к int
Одной из причин использования enum является экономия памяти
С точки зрения обеспечения удобочитаемости программ ничто не мешает вместо перечислимого типа использовать просто группу совместно определённых именованных констант, особенно при наличии таких языковых механизмов, как модули или классы.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

8 комментариев: Enum как работать и зачем нужно

  • Andru_X говорит:

    Правильней будет

    Тогда false==0, true==1

    • admin говорит:

      Да, если в привычном понимании булевых функций, то это правильнее. И вообще так правильнее, чтобы другим было понятно.
      С другой стороны — всё это условности, и ничто не мешать делать что-то для себя своим манером. Главное понимать механизм.

      • tetraksis говорит:

        Мне прислали вот это:» E-NUM оповещает вас об успешной аутентификации.»
        Что это значит, как мне этим пользоваться. Только без терминов если можно. Мне 70 лет я уже не успел их освоить, мне пользоваться как? С уважением.

        • admin говорит:

          это сообщение к программированию не относится.
          к примеру есть интернет кошельки, на которых хранят реальные деньги. Вот сервис E-num — это их служба.
          это служба, которая предполагает защиту от воровства паролей (авторизация только по мобильному телефону, например)

          сами по себе они вам ничего не высылают. Если вы где-то регистрируетесь, то может быть так, что сервис, в котором вы зарегестрировались использует эту службу, сервис E-Num, тогда они во время регистрации заставляют заполнять поля, нужные этой службе безопасности.
          Откину, кошельки, заменю их почтовым ящиком.
          Вы зарегистрировали почтовый ящик, во время регистрации поставили галочку «использовать E-NUM», после регистрации, например, при каждом входе кроме логина и пароля будет запрашиваться номер телефона, на номер телефона приходить СМС с каки-то там кодом, который надо ввести в соответствующее место на странице входа. Ввели правильно — вход выпонится и вам приходит сообщение об успешной аутентификации. (типа все в порядке, мы убедились, что это вы, а не злоумышленник)
          ==========================

          Но есть вероятность того, что вам приходит сообщение от злоумышленников. Если видите в сообщении текст, требующий отправки смс — просто игнорируйте такие сообщения. — это мошенники.

        • admin говорит:
  • Sergio говорит:

    27 строка последнего примера — забыли перенос, поэтому закомментили нужный кусок кода…

  • Andrey говорит:

    Выводим все строковые значения на экран
    for (i=0;i<1;i++)
       {
         cout<<flag_name[i]<<» «; //Для вывода на экран мы обращаемся к массиву.
        }

    выведед только первый элемент массива, для вывода всех значений либо изменить вот это i<1 на i<2, либо использовать i<=1

    Автор сайта отвечает:
    Исправлено

  • Alex говорит:

    flag = 0;

    странно, приводить к типу boolean не нужно?

    flag = boolean(0);

    int не приводится автоматом к enum

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Подождите, идет подготовка к зависанию компьютера...

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок