double arrow

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

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

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

Short Swap (short I)

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

Short Swap (short I)

{

union t_U {

short i;

char c [2];

} u;

u.i = I;

char ch = u.c [0];

u.c [0] = u.c [1];

u.c [1] = ch;

return u.i;

}

cout << Swap (1234) << endl; // На экране -11772

Переменная u из этой функции интерпретируется в памяти так:

c[0] (char – 1 байт)
i (short – 2 байта)
u
c[1] (char – 1 байт)

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

union {

short i;

char c [2];

};

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

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

{

union {

short i;

char c [2];

};

i = I;

char ch = c [0];

c [0] = c [1];

c [1] = ch;

return i;

}

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

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

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

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

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

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

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

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

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

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

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

{

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, зеленый, голубой, синий, фиолетовый

};

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: