Пересчляемий тип даних в сі
Перераховуються тип
У сі виділений окремий тип перерахування (enum), що задає набір всіх можливих цілочисельних значень змінної цього типу. синтаксис перерахування
У цій програмі оголошено перерахування з ім'ям Gender. Змінна типу enum Gender може приймати лише тоді два значення - це MALE І FEMALE.
За замовчуванням, перше поле структури приймає числове значення 0, наступне 1, наступне 2 і т.д. Можна задати нульове значення явно:
Будуть виведені значення 0 1 0 1 2. Тобто, значення SYMBOL дорівнює значенню EXPRESSION, а NUMBER одно OPERATOR. Якщо ми змінимо програму і напишемо
Те SYMBOL буде дорівнює значенню 0, NUMBER дорівнює 1, EXPRESSION дорівнює 10, OPERATOR дорівнює 11, UNDEFINED дорівнює 12.
Прийнято писати імена полів перерахування, як і константи, великими літерами. Так як поля перерахування цілого типу, то вони можуть бути використані в операторі switch.
Зауважте, що ми не можемо привласнити змінної типу Token просто чисельне значення. Змінна є сутністю типу Token і приймає тільки значення полів перерахування. Проте, змінної числа можна привласнити значення поля перерахування.
Зазвичай перерахування використовуються в якості набору іменованих констант. Часто надходять у такий спосіб - створюють масив рядків, асоційованих з полями перерахування. наприклад
Так як поля приймають чисельні значення, то вони можуть використовуватися в якості індексу масиву рядків. Команда exit (N) повинна отримувати код помилки, відмінний від нуля, тому що 0 - це планове завершення без помилки. Саме тому перше поле перерахування дорівнює одиниці.
Перерахування використовуються для більшої тіпобезопасності і обмеження можливих значень змінної. Для того, щоб не писати enum кожен раз, можна оголосити новий тип. Робиться це так само, як і в випадку структур.
ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 [email protected] Stepan Sypachev students