Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типичная ошибка

Хороший стиль программирования

Типичная ошибка

Перечисляемые типы

Перечислимый тип вводится ключевым словом enum и задает набор значений, определяемый пользователем. Набор значений заключается в фигурные скобки и является набором целых именованных констант, представленных своими идентификаторами. Эти константы называются перечислимыми константами. Рассмотрим объявление:

enum Suit {CLUBS, DIAMONDS, HEARTS, SPADES};

С его помощью создается целочисленный тип набором из четырех названий мастей, именующих целочисленные константы. Перечислимые константы - это идентификаторы CLUBS, DIAMONDS, HEARTS и SPADES, имеющие значения - 0, 1, 2 и 3, соответственно. Эти значения присвоены по умолчанию. Первой перечислимой константе присваивают постоянное целое численное значение 0. Каждый последующий член списка на единицу больше, чем его сосед слева. Переменным типа Suit, определенного пользователем, может быть присвоено только одно из четырех значений, объявленных в перечислении.Б.зЮ

Другой популярный пример перечислимого типа:

enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, YUL AUG, SEP, OCT, NOV, DEC};

Это объявление создает определенный пользователем тип Months с константами перечисления, представляющими месяцы года. Поскольку первое значение приведенного перечисления установлено равным 1, оставшиеся значения увеличиваются на 1 от 1 до 12.

В объявлении перечислимого типа любой константе перечисления можно присвоить целое значение.

После того, как константа перечисления определена, попытка присвоить ей другое значение является синтаксической ошибкой.

Использование перечислений вместо целых констант облегчает чтение программы.

Идентификаторы в enum должны быть уникальными, но отдельные константы перечисления могут иметь одинаковые целые значения.

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

Перечислимые константы могут определяться и инициализироваться произвольными целочисленными константами, а также константными выражениями:

enum ages (milton = 47, ira, harold = 56, philip = harold + 7};

Обратите внимание на то, что когда нет явного инициализатора, применяется правило по умолчанию, таким образом - ira = 48. Значения перечислимых констант могут быть не уникальными.

Каждое перечисление является отдельным типом. Типом элемента перечисления является само перечисление. Например, в

enum Keyword {ASM, AUTO, BREAK};

AUTO имеет тип Keyword.

Присвоение целого эквивалента константы перечисления переменной перечислимого типа приводит к замечанию (предупреждению) компилятора.

Перечислимая константа может быть объявлена анонимно, то есть без имени типа.

enum {FALSE, TRUE}; enum {lazy, hazy, crazy} why;

Первое объявление — распространенный способ объявления мнемонических целочисленных констант. Второе объявление объявляет переменную перечислимого типа why, с допустимыми значениями этой переменной lazy,hazy и crazy.

Перечисления могут неявно преобразовываться в обычные целочисленные типы, но не наоборот.

enum boolean {FALSE, TRUE} q;
enum signal {off, on} a = on; //а инициализируется в on
enum answer {no, yes, maybe = -1} b;  
int i, j = true; //верно true преобразуется в 1
a = off; //верно
і = а; //верно i становится 1
q = а; //неверно два различных типа
q = (boolean)а; //верно явное преобразование приведением
b = (q? no: yes); //верно ответ имеют тип enumerator

 

<== предыдущая лекция | следующая лекция ==>
Битовые поля | Сложное сопротивление. Внецентренное растяжение (сжатие)
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 290; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.