Главная
Регистрация
Вход
Суббота
23.11.2024
05:32
Приветствую Вас, Гость | RSS

Меню сайта

Друзья сайта

Категории раздела
1. Основы работы в среде C++ Builder.Основы языка Си++ [9]
2. Операторы ветвления и операторы передачи управления [4]
3. Операторы цикла и операторы передачи управления [5]
4. Одномерные массивы [3]
5. Многомерные массивы [3]
6. Указатели.Динамическое распределение памяти [6]
7. Отладка программы [3]
8. Функции [8]
9. Строки [5]
10. Функция Main [2]
11. Типы данных,определяемые пользователем [5]
12. Потоки ввода/вывода [7]
13. Основы объектно-ориентированного программирования [5]
Приложения [11]

Форма входа

Наш опрос
Оказался ли Вам полезным наш сайт?
Всего ответов: 464

Пользователи

Онлайн всего: 9
Гостей: 9
Пользователей: 0

 Каталог статей 
Главная » Статьи » Лекции по C++ » 11. Типы данных,определяемые пользователем

PDA-версия страницы

2. Тип перечисление

Тип перечисление позволяет задать связанное множество символических целых констант. Эти константы называются элементами перечисления. Отличие от эквивалентных им описаний со спецификацией const состоит в том, что нет адреса памяти, связанного с каждым элементом перечисления. Поэтому применение к элементу перечисления операции взятия адреса является ошибочным.

Перечисление описывается со служебным словом enum и разделенным запятыми списком элементов перечисления:

enum {false, true};

По умолчанию первому элементу перечисления присваивается значение 0. Каждому последующему элементу перечисления присваивается значение на 1 большее, чем значение предыдущего элемента. Так в предыдущем примере false = 0, true = 1.

Значение можно явно присвоить элементу перечисления:

enum (two = 2, three, four, ten = 10. eleven, fifty = ten + 40};

Константе two присваивается значение 2, константам three и four присваиваются значения 3 и 4, константе eleven 11.

Имена перечисляемых констант должны быть уникальными, а значения могут совпадать. Преимущество применения перечисления перед описанием именованных констант и директивой #define состоит в том, что связанные константы нагляднее; кроме того, компилятор при инициализации констант может выполнять проверку типов.

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

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

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

enum имя-этикетка {имя_константы [= значение], ...};

Например:

enum Status {Success = 1,Wait, Proceed, Error = -1 };

В операторе enum после закрывающей фигурной скобки можно сразу объявить несколько переменных данного типа:

enum Status {Success = 1,Wait, Proceed, Error = -1 } ProclStatus, Proc2Status;

Нужно иметь в виду, что имя-этикетка не является настоящим именем типа. Именем типа будет в вышеприведенном примере enum Status. Соответственно переменные должны объявляться как

enum Status ProclStatus, Proc2Status;

Однако всегда можно воспользоваться ключевым словом typedef и ввести для перечисления подлинное новое имя. Обычно это делается сразу:

typedef enum имя-этикетка {список_констант} имя_типа;

Предыдущее объявление можно переписать так:

typedef enum _Status {

Success = 1,

Wait, Proceed,

Error = -1 } Status;

Тогда Status будет полноценным именем перечислимого типа. (Обратите внимание, что для этикетки мы указали имя _Status. Это обычная практика.)

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

Status Psk = Success;

Status Psk = 1;   // ошибка

Категория: 11. Типы данных,определяемые пользователем | Добавил: Admin (01.09.2011)
Просмотров: 9925 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Помочь сайту!
рублей WMR
WebMoney на кошелек R407507742179

Партнёры сайта

Закладки

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

Copyright H-L-L.RU © 2024
Сделать бесплатный сайт с uCoz