Инструменты пользователя

Инструменты сайта


perechisljaemye_tipy

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

perechisljaemye_tipy [2010/10/08 15:39] (текущий)
Строка 1: Строка 1:
 +Перечисляемые типы.Перечислимый тип вводится ключевым словом enum и задает набор значений,​ определяемый пользователем. Набор значений заключается в фигурные скобки и является набором целых именованных констант,​ представленных своими идентификаторами. Эти константы называются перечислимыми константами. Рассмотрим объявление:​
  
 +<​file>​
 +enum Suit {CLUBS, DIAMONDS, HEARTS, SPADES};
 +</​file>​
 +С его помощью создается целочисленный тип набором из четырех названий мастей,​ именующих целочисленные константы. Перечислимые константы - это идентификаторы CLUBS, DIAMONDS, HEARTS и SPADES, имеющие значения - 0, 1, 2 и 3, соответственно. Эти значения присвоены по умолчанию. Первой перечислимой константе присваивают постоянное целое численное значение 0. Каждый последующий член списка на единицу больше,​ чем его сосед слева. Переменным типа Suit, определенного пользователем,​ может быть присвоено только одно из четырех значений,​ объявленных в перечислении
 +
 +Другой популярный пример перечислимого типа:
 +
 +<​file>​
 +enum Months {JAN = 1, FEB, MAR, APR, MAY, YUN, YUL AUG, SEP, OCT, NOV, DEC};
 +</​file>​
 + 
 +
 +Это объявление создает определенный пользователем тип Months с константами перечисления,​ представляющими месяцы года. Поскольку первое значение приведенного перечисления установлено равным 1, оставшиеся значения увеличиваются на 1 от 1 до 12. 
 +
 +В объявлении перечислимого типа любой константе перечисления можно присвоить целое значение.
 +
 +Примечание:​ Типичная ошибка. После того, как константа перечисления определена,​ попытка присвоить ей другое значение является синтаксической ошибкой.
 +Основные моменты использования перечислений.
 +1. Использование перечислений вместо целых констант облегчает чтение программы.
 +
 +2. Идентификаторы в enum должны быть уникальными,​ но отдельные константы перечисления могут иметь одинаковые целые значения.
 +
 +3. Набор идентификаторов перечислимого типа — собственный уникальный тип, отличающийся от других целочисленных типов.
 +
 +4. Перечислимые константы могут определяться и инициализироваться произвольными целочисленными константами,​ а также константными выражениями:​
 +
 +<​file>​
 +enum ages (milton = 47, ira, harold = 56, philip = harold + 7};
 +</​file>​
 + 
 +
 +Примечание:​ Обратите внимание на то, что когда нет явного инициализатора,​ применяется правило по умолчанию,​ таким образом - ira = 48. Кроме того, значения перечислимых констант могут быть не уникальными.
 +5. Каждое перечисление является отдельным типом. Типом элемента перечисления является само перечисление. Например,​ в
 +
 +<​file>​
 +enum Keyword {ASM, AUTO, BREAK};
 + 
 +
 +AUTO имеет тип Keyword.</​file>​
 +
 +6. Перечислимая константа может быть объявлена анонимно,​ то есть без имени типа.
 +
 +<​file>​
 +enum {FALSE, TRUE};
 +enum {lazy, hazy, crazy} why;
 +</​file>​
 +
 + 
 +
 +Первое объявление — распространенный способ объявления мнемонических целочисленных констант. Второе объявление объявляет переменную перечислимого типа why, с допустимыми значениями этой переменной lazy,hazy и crazy.
 +
 +7. Перечисления могут неявно преобразовываться в обычные целочисленные типы, но не наоборот.
 +
 +<​file>​
 +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)а; ​ //​верно явное преобразование приведением
 +</​file>​
загрузка...
perechisljaemye_tipy.txt · Последние изменения: 2010/10/08 15:39 (внешнее изменение)