Какая область видимости константы, объявленной в перечислении?
Константа, объявленная в перечислении, имеет область видимости в пределах скобок, в которых объявляется шаблон (тип) перечисления.
Например.
Дано перечисление NUMBERS, в котором объявлены 3 константы с именами num1, num2, num3. Если в этом же блоке операторных скобок { } объявить переменную с именем num2
... { // область видимости имен num1, num2, num3 enum NUMBERS { num1 = 15, num2 = 77, num3 = -1232 }; // попытка объявить имя num2 int num2 = 122; // ошибка!!!}то компилятор выдаст ошибку
Error: 'num2' : redefinition; previous definition was 'enumerator'7. Объединения.
Тип объединение описывает набор данных, которые называются элементами или членами объединения. Объединение позволяет хранить в одной и той же области памяти значения различных типов, которые соответствуют типам элементов объединения. Но в каждый данный момент времени в этой области памяти может храниться только одно значение. Отсюда следует, что длина памяти, распределяемой компилятором под объединение, равна наибольшей из длин членов этого объединения. Как и в случае структуры, члены объединения могут иметь любой тип за исключением типов void и функция.
Объявляются объединения следующим образом:
union num
{
int n;
double f;
};
где union – это ключевое слово, num – имя типа объединения, n, f – члены объединения.
Переменная типа объединение объявляется следующим образом:
union num d; // объявление переменной d, которая имеет тип num (язык С)
num d; // объявление переменной d, которая имеет тип num (язык С++)
|
|
и также называется объединением. Объявление типа объединения и переменной, которая имеет этот тип, может быть объединено в одну инструкцию. Например,
union num
{
int n;
double f;
} d; // d – переменная типа num
При объявлении переменной типа объединение её можно инициализировать значением, которое должно иметь тип первого члена объединения. Например,
union num d = { 1 }; // правильно, d = 1
union num d = { 1.0 }; // ошибка
Как и в случае со структурами, для доступа к элементу объединения используется оператор точка ‘.’. Например,
union num e, g;
e.n = 1;
e.f = 1.1;
Объединения одного типа можно присваивать друг другу. В этом случае оператор присваивания выполняет по членное копирование объединений. Например,
union num e, g;
e = g;
Также как и структуры объединения нельзя сравнивать.
8.
9. Объявление типа перечисления с использованием средства typedef. Общая форма. Пример
Перечисление можно также объявлять с использованием ключевого слова typedef. В этом случае общая форма такого объявления следующая
typedef enum TypeName {
// перечень констант и константных значений
// ...
};
здесь TypeName – имя нового типа перечисления, которое создается.
Пример. С помощью ключевого слова typedef объявляется тип TDAYS, который есть перечислением. Затем объявляется переменная типа TDAYS.
|
|
// объявить новый тип TDAYS, который есть тип-перечисление
typedef enum TDAYS {
Sun = 1, Mon, Tue, Wed, Thu, Fri, Sat
};
// объявить переменную типа TDAYS
TDAYS td;
// присвоить переменной td значение из набора типа TDAYS
td = TDAYS::Sun;
Дата добавления: 2021-07-19; просмотров: 56; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!