Перечисление (или enum) в C
Здравствуйте,野心勃勃 программисты! Сегодня мы окунемся в чудесный мир перечислений в C. Как ваш доброжелательный соседний преподаватель информатики, я рад помочь вам в этом путешествии. Так что возьмите любимый напиток, устроитесь поудобнее, и давайте отправимся в это приключение вместе!
Что такое Перечисление (или enum) в C?
Представьте, что вы организовываете свой шкаф. Вы можете разделить свои вещи на разные типы: рубашки, брюки, платья и так далее. В программировании на языке C, перечисление (или enum для краткости) похоже на создание собственной категории для вашего кода. Это способ определить группу.named констант, делая ваш код более читаемым и структурированным.
Давайте начнем с простого примера:
enum Days {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
В этом примере мы создали enum под названием Days
. Each элемент в enum (MONDAY, TUESDAY и т.д.) называется перечисляемым. По умолчанию C присваивает целочисленные значения этим перечисляемым, начиная с 0. Так что MONDAY это 0, TUESDAY это 1 и так далее.
Определение и декларация типа enum
Теперь, когда мы понимаем, что такое enum, давайте посмотрим, как его определить и объявить:
enum Fruits {
APPLE,
BANANA,
ORANGE,
MANGO
};
int main() {
enum Fruits favorite = MANGO;
printf("My favorite fruit is number %d\n", favorite);
return 0;
}
В этом примере мы определили enum под названием Fruits
. Затем, в функции main
, мы объявили переменную favorite
типа enum Fruits
и присвоили ей значение MANGO
. Когда мы выводим favorite
, он будет выводить 3, потому что MANGO является четвертым элементом в нашем enum (не забудьте, что мы начинаем отсчет с 0).
Декларация переменных enum
Существует несколько способов декларации переменных enum. Давайте рассмотрим их:
enum Colors {RED, GREEN, BLUE};
// Метод 1: Декларировать переменную separately
enum Colors paint;
paint = GREEN;
// Метод 2: Декларировать и инициализировать в одной строке
enum Colors sky = BLUE;
// Метод 3: Использовать typedef для удобства
typedef enum {CIRCLE, SQUARE, TRIANGLE} Shape;
Shape myShape = TRIANGLE;
Каждый из этих методов достигает одной и той же цели: создание переменной типа enum. Выберите тот, который вам удобнее!
Изменение значений констант enum
По умолчанию константы enum присваиваются увеличивающиеся целочисленные значения, начиная с 0. Но что, если мы хотим изменить эти значения? Хорошая новость! Мы можем это сделать:
enum Months {
JAN = 1,
FEB,
MAR,
APR = 100,
MAY,
JUN
};
В этом примере JAN явно установлен в 1, поэтому FEB будет 2, а MAR будет 3. Затем APR установлен в 100, поэтому MAY будет 101, а JUN будет 102.
Использование enum в операторах switch
Enums особенно полезны в операторах switch. Они делают ваш код более читаемым и менее ошибочным. Давайте рассмотрим пример:
enum Weekday {MON, TUE, WED, THU, FRI};
enum Weekday today = WED;
switch(today) {
case MON:
printf("It's Monday. Time to start the week!\n");
break;
case TUE:
printf("It's Tuesday. Keep the momentum going!\n");
break;
case WED:
printf("It's Wednesday. Halfway there!\n");
break;
case THU:
printf("It's Thursday. The weekend is almost here!\n");
break;
case FRI:
printf("It's Friday. Time to celebrate!\n");
break;
default:
printf("It's the weekend! Enjoy!\n");
}
Этот оператор switch гораздо clearer, чем если бы мы использовали целочисленные значения. Immediately显而易но, что представляет собой каждый случай.
Примеры типа enum
Давайте рассмотрим еще несколько примеров для巩固ления нашего понимания:
Пример 1: Сигналы светофора
enum TrafficLight {
RED,
YELLOW,
GREEN
};
enum TrafficLight light = YELLOW;
if (light == RED) {
printf("Stop!\n");
} else if (light == YELLOW) {
printf("Prepare to stop.\n");
} else if (light == GREEN) {
printf("Go!\n");
}
Пример 2: Игровые карты
enum Suit {HEARTS, DIAMONDS, CLUBS, SPADES};
enum Rank {ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING};
struct Card {
enum Suit suit;
enum Rank rank;
};
struct Card myCard = {HEARTS, QUEEN};
printf("My card is the %d of %d\n", myCard.rank, myCard.suit);
Применения enum
Enums имеют множество практических применений в программировании. Вот несколько из них:
- Механизмы состояний: Enums могут представлять различные состояния в системе.
- Опции меню: Enums могут использоваться для представления выборов в меню.
- Коды ошибок: Разные типы ошибок могут быть представлены как значения enum.
- Опции конфигурации: Enums могут представлять различные параметры конфигурации.
Вот таблица, резюмирующая некоторые.common методы enum:
Метод | Описание | Пример |
---|---|---|
Декларация | Декларировать тип enum | enum Colors {RED, GREEN, BLUE}; |
Создание переменной | Создать переменную типа enum | enum Colors paint = GREEN; |
Присвоение значений | Присваивать конкретные значения константам enum | enum Months {JAN = 1, FEB, MAR}; |
Typedef | Создать определение типа для enum | typedef enum {CIRCLE, SQUARE} Shape; |
Использование в switch | Использовать enum в операторе switch | switch(shape) { case CIRCLE: ... } |
И вот и все! Теперь вы знакомы с миром перечислений в C. Помните, что enums ваши друзья. Они помогают сделать ваш код более читаемым, структурированным и менее подверженным ошибкам. По мере продолжения вашего пути в программировании вы найдете множество ситуаций, где enums могут упростить вашу жизнь. Счастливого кодирования и пусть ваши enums всегда будут в порядке!
Credits: Image by storyset