В языке C можно присваивать целое число перечислению без приведения int в enum.
Рассмотрим пример.
enum color { red, blue, green };
int x = green; /* OK в языках C и C++ */
enum color col = 7; /* OK в языке C; ошибка в языке C++ */
Также вам может показаться, что такая тема как
http://omsk.ponominalu.ru/event/anacondaz
никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт omsk.ponominalu.ru
Тема билет на Anacondaz там представлена весьма широко.
Одним из следствий этого факта является то, что в программах на языке С мы можем применять операции инкрементации (++) и декрементации (—) к переменным, являющимся перечислениями. Это может быть удобным, но одновременно небезопасным.
enum color x = blue;
++x; /* переменная x становится равной значению green;
ошибка в языке C++ */
++x; /* переменная x становится равной 3; ошибка в языке C++ */
Выход за пределы перечисления может входить в наши планы, а может быть неожиданным.
Обратите внимание на то, что, подобно дескрипторам структур, имена перечислений пребывают в своем собственном пространстве имен, поэтому каждый раз при указании имени перечисления перед ним следует ставить ключевое слово enum.
color c2 = blue; /* ошибка в языке C: переменная color не находится в пределах области видимости; OK в языке C++ */ enum color c3 = red; /* OK */
В языке С нет пространств имен (в том смысле, как это принято в языке С++). Так что же можно сделать, чтобы избежать коллизий имен в больших программах, написанных на языке С? Как правило, для этого используются префиксы и суффиксы. Рассмотрим пример.
/* в bs.h: */
typedef struct bs_string { /* . . . */ } bs_string; /* строка
Бьярне */
typedef int bs_bool ; /* булев тип Бьярне */
/* in pete.h: */
typedef char* pete_string; /* строка Пита */ typedef char pete_bool ; /* булев тип Пита */
Этот прием настолько широко используется, что использовать одно- и двухбуквенные префиксы обычно уже недостаточно.
Опубликовал katy
May 01 2015 10:42:10 ·
0 Комментариев ·
3769 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.