Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Brian_Kernighan_Dennis_Ritchie-The_C_Programming_Language-RU.pdf
Скачиваний:
39
Добавлен:
17.03.2018
Размер:
2.45 Mб
Скачать

— указатель на левое поддерево в структуре s; a

s.right->tword[0]

— это первый символ из tword — элемента правого поддерева s.

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

union { struct {

int type;

}n; struct {

int type; int intnode;

}ni;

struct {

int type;

float floatnode; } nf;

} u;

...

u.nf.type = FLOAT; u.nf.floatnode = 3.14;

...

if (u.n.type == FLOAT)

... sin(u.nf.floatnode) ...

A 8.4. Перечисления

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

спецификатор-перечисления:

enum идентификаторнеоб, { список-перечислителей } enum идентификатор

список-перечислителей: перечислитель

список-перечислителей , перечислитель

перечислитель: идентификатор

идентификатор = константное-выражение

Идентификаторы, входящие в список перечислителей, объявляются константами типа int и могут употребляться везде, где требуется константа. Если в этом списке нет ни одного перечислителя со знаком =, то значения констант начинаются с 0 и увеличиваются на 1 по мере чтения объявления слева направо. Перечислитель со знаком = даёт соответствующему идентификатору значение; последующие идентификаторы продолжают прогрессию от заданного значения.

Соседние файлы в предмете Программирование