Розділ 14. Переліки
Перелічувальний тип – це тип даних, множиною значень якого є обмежений список ідентифікаторів – констант даного типу.
Переліки (enum від enumerate) використовуються для вибору та призначання об’єктів із заданої множини значень.
14.1. Оголошення переліків
Оголошення змінних типу перелік нічим не відрізняється від оголошення звичайних змінних. Оголошення переліків визначає відповідний тип змінної та список логічно зв’язаних іменованих констант, значеннями яких є певні цілі числа. Перелік має такий формат:
enum [<ім’я>] {
<список_елементів>
} [<список_змінних>];
Ім’я перелічувального типу задається тоді, коли у програмі потрібно визначити змінні цього типу. Компілятор забезпечує, щоб ці змінні отримували значення лише зі списку констант. Якщо ім’я перелічуваного типу не вказане, то визначається анонімний перелік.
Список елементів – це список ідентифікаторів (нумераторів, елементів переліку), відокремлених комами.
Змінна перелічувального типу може отримувати значення однієї з іменованих констант списку. Кожний ідентифікатор у списку відображає назву елемента з переліку і має бути унікальним. Для переліку допускається максимальна кількість ідентифікаторів 65535. Ідентифікатори списку еквівалентні їхнім значенням, які можуть бути як додатними, так і від’ємними. У разі відсутності певного значення, першому ідентифікатору відповідає значення 0, наступному – значення 1 і т. д.
Приклад 13.1. Оголосити перелік днів тижня:
enum week {mon, tues, wed, thur, fri, sat, sun};
week day; // оголошено змінну day типу пререлік week
Константи mon, tues, wed, thur, fri, sat, sun є цілими числами, перша з яких (mon) за замовчуванням отримує значення 0, а кожна наступна – значення на одиницю більше за значення попереднього елемента (tues = 1, wed = 2, …, sun = 6).
Змінну day переліку week ще можна оголосити так:
enum week {sun, mon, tues, wed, thur, fri, sat} day;
Властивості даних типу enum аналогічні властивостям даних типу int. Змінні типу enum можуть використовуватись в індексних виразах, арифметичних операціях та операціях порівняння як операнди. При виконанні арифметичних операцій переліки перетворюються у цілі числа.
Приклад 13.2. Оголосити перелік чисел:
enum nums {one=1, two, three, ten = 10, eleven,
twenty = 2 * ten, thirty = twenty + 10};
Тут константам two та three присвоюються значення 2 і 3 відповідно, константі eleven – 11, константі twenty – 20, а константі thirty – 30.
Кожний ідентифікатор (елемент переліку) у своїй області видимості повинен бути унікальним, проте їхні значення можуть повторюватися. Областю видимості елементів переліку є охоплюючий блок, тобто область, в якій визначено перелік.
Оголошення елементів з однаковим іменем у різних переліках призведе до помилки компіляції. Наступний фрагмент коду не відкомпілюється, тому що елемент a визначений і в переліку A, і в переліку B:
enum A {a, b, c};
enum B {a, x, y};
(Для ознайомлення з повним текстом статті необхідно залогінитись)