АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Перечисления

Читайте также:
  1. Батура, М. П.
  2. Грамматика (синтаксис)
  3. Доходы бюджетной системы РФ, их классификация
  4. Доходы бюджетов
  5. Журналистика в эпоху «мрачного сомнения»
  6. Защитные меры, последующие за поглощением включают в себя ряд актов.
  7. КЛАССИФИКАЦИЯ ЖИВОТНЫХ
  8. Кузин Феликс Алексеевич Культура делового общения 5 страница
  9. ЛекцияХАРАКТЕРИСТИКА ТЕКСТА КАК ОСНОВНОЙ ЕДИНИЦЫ РЕЧИ
  10. МЕНА ВЕКСЕЛЕЙ
  11. Методические рекомендации
  12. ОФОРМЛЕНИЕ КУРСОВОЙ РАБОТЫ

Перечисления. Перечисления относятся к типичным средствам программирования в стиле C++, и их использование может заметно упростить процесс создания вашей программы.

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

Приведем простой пример, DAYENUM, в котором перечисления используются для создания типа данных, хранящего дни недели.

Объявление типа начинается со слова enum и содержит перечисление всех возможных значений переменных создаваемого типа. Эти значения называются константами перечисляемою типа. Перечисляемый тип days_of_week включает 7 констант перечисляемого типа: Sun, Mon, Tue и т. д. до Sat. На рис. 4.8 приведен синтаксис объявления перечисляемого типа.

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

Когда тип days_of_week определен, можно определять и переменные этого типа. В программе DAYENUM мы используем две переменные типа days_of_week:

days_of_week day1, day2;

В языке C в подобных объявлениях было необходимо использовать ключевое слово enum:

enum days_of_week day1, day2;

но язык C++ устранил эту необходимость. Переменным перечисляемого типа можно присваивать любое из значений, указанных при объявлении типа. Например, переменным day1 и day2 из нашей последней программы мы присваиваем значения Mon и Thu. Присваивание значений, не указанных при перечислении, например day1 = halloween; не допускается. Перечисляемые типы данных допускают применение основных арифметических операций. В частности, в нашей программе производится вычитание двух переменных перечисляемого типа. Кроме того, перечисляемые типы допускают с помощью диапазона значений. Используя перечисления, необходимо давать имя каждому возможному значению создаваемого типа.

Результат работы программы DAYENUM выглядит следующим образом:

Разница в днях:

3 day1 наступит раньше, чем day2

Использование арифметических операций и операций отношения с перечисляемыми типами данных, как правило, не несет большой смысловой нагрузки. Например, если мы определили тип данных pets, хранящий названия домашних животных, следующим образом: enum pets { cat, dog, hamster, canary, ocelot }; то неясен смысл выражений dog + canary или (cat < hamster) и т.п. Внутренне перечисляемые типы данных представляются и обрабатываются как целые числа. Этот факт объясняет возможность применения к переменным перечисляемого типа арифметических операций и операций отношения. Фактически первое значение в списке рассматривается как число 0, второе — как число 1, и т. д. В программе DAYENUM значения от Sun до Sat представляют собой целые числа в диапазоне 0...6. Арифметические операции над переменными перечисляемых типов сводятся к операциям над целыми числами. Однако, несмотря на то, что компилятор знает о целочисленной форме представления перечисляемых значений, стоит использовать этот факт с большой осторожностью. Если вы попробуете выпол- нить присваивание day1 = 5; компилятор выдаст предупреждающее сообщение (хотя компиляция произойдет без ошибок). Рекомендуется там, где возможно, не использовать целочисленную интерпретацию перечисляемых значений.

Задание целых значений для перечисляемых констант. Как мы говорили, первой из перечисляемых констант соответствует целое значение, равное 0, второй — значение, равное 1, и т. д.

Для того чтобы изменить значение, с которого начинается нумерация, можно с помощью операции присваивания задать это значение первой из перечисляемых констант:

enum Suit { clubs = 1, diamonds, hearts, spades };

В этом случае следующим по списку константам будут соответствовать числа 2, 3 и 4 соответственно.

Недостаток перечислений. Важным недостатком перечисляемых типов данных является то, что они не распознаются средствами ввода/вывода C++. Например, результатом вывода в фрагменте

enum direction { north, south, east, west };

direction dir = south;

cout << dir1;

будет не south, формально являющееся значением переменной dir, а ее внутреннее представление, то есть целое число 1.

Перечисления - это набор именованных целочисленных констант, определяющий все допустимые значения, которые может принимать переменная. Перечисления можно встретить в повседневной жизни. Например, в качестве перечислений монет в Соединенных Штатах используются: один цент, пять центов, десять центов, двадцать пять центов, полдоллара, доллар

Перечисления определяются с помощью ключевого слова enum, которое указывает на начало перечисляемого типа.

Список перечислений - это разделенный запятыми список идентификаторов. Как и в структурах, ярлык используется для объявления переменных данного типа.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)