Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S__Chast_2.doc
Скачиваний:
31
Добавлен:
09.02.2015
Размер:
1 Mб
Скачать

Анонимные объединения

Имеется специальный вид объединений – анонимные объединения. Анонимные объединения объявляются без указания имени типа:

union {

short i;

char c [2];

};

Создавать переменные такого типа нельзя. Анонимные объединения позволяют обращаться к своим полям как к обычным переменным – без применения оператора “точка”. Они просто указывают на то, что переменные, соответствующие их полям, разделяют одну и ту же память.

Функция Swapс использованием анонимного объединения выглядит так:

short Swap ( short I)

{

union {

short i;

char c [2];

};

i = I;

char ch = c [0];

c [0] = c [1];

c [1] = ch;

return i;

}

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

Перечисления(enumeration) служат для определения пользовательских типов данных, значения которых принадлежат одному из элементов в некотором списке именованных целочисленных констант. Перечисление задается ключевым словомenum:

enum тип_Спектр {

красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый

} Цвет1, Цвет2;

Новый пользовательский тип данных тип_Спектропределяет список именованных целочисленных констант (этот список находится внутри фигурных скобок {}). Значениями переменныхЦвет1 и Цвет2могут быть только те значения, имена которых перечислены в определении этого типа данных. Переменной этого типа может быть присвоено любое из перечисленных имен:

Цвет1 = желтый;

Цвет2 = синий;

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

for ( Цвет1 = красный; Цвет1 <= фиолетовый; Цвет1 = тип_Спектр( Цвет1 + 1 ) )

cout << Цвет1 << endl;

Этот фрагмент программы выведет на экран целые значения от 0 до 6.

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

Void WriteColor (тип_Спектр c )

{

switch (C)

{

case красный: cout << "красный"; break;

case оранжевый: cout << "оранжевый"; break;

case желтый: cout << "желтый"; break;

case зеленый: cout << "зеленый"; break;

case голубой: cout << "голубой"; break;

case синий: cout << "синий"; break;

case фиолетовый: cout << "фиолетовый"; break;

default: cout << "Неправильный цвет\n";

}

}

Числовые значения констант перечисления можно изменять, например, так:

enum тип_Спектр {

красный, оранжевый, желтый = 10, зеленый, голубой, синий, фиолетовый

};

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

красный

оранжевый

желтый

зеленый

голубой

синий

фиолетовый

0

1

10

11

12

13

14

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]