Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Перечисления в C: определение, объявление и операции с флагами

Перечисления в C

Изучите, как определять, объявлять и использовать перечисления в C — с практическими примерами, техниками флагов и информацией о размере.

В C перечисление (enum) — это тип, группирующий набор именованных целочисленных констант, обеспечивающий более четкое выражение намерений и типобезопасность на этапе компиляции.

enum flag {const1, const2, ..., constN};

По умолчанию const1 равно 0, const2 — 1, и так далее. При необходимости можно задать собственные значения при объявлении.

// Настройка констант enum
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3,
};

Объявление перечисляемого типа

Определение enum создает новый тип, который можно использовать для переменных. Вот как объявить и инстанцировать его.

enum boolean {false, true};
enum boolean check; // объявление переменной

Переменная check теперь имеет тип enum boolean. Ее значения соответствуют false = 0 и true = 1.

enum boolean {false, true} check;

Пример: Перечисление дней недели

#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
    enum week today = Wednesday;
    printf("Day %d", today + 1);
    return 0;
}

Вывод

Day 4

Зачем использовать перечисления?

Переменные enum хранят одно именованное значение, делая код самодокументируемым. Они также занимают столько же памяти, сколько int по умолчанию, обычно 4 байта на большинстве платформ.

#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
    card = club;
    printf("Size of enum variable = %d bytes", sizeof(card));
    return 0;
}

Вывод

Size of enum variable = 4 bytes

Этот размер соответствует базовому типу int, хотя точный размер может варьироваться в зависимости от компилятора и архитектуры.


Использование перечислений для флагов

Перечисления отлично подходят для представления флагов, когда каждая константа — отдельная степень двойки. Это позволяет комбинировать флаги с побитовым ИЛИ и проверять их с побитовым И.

#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;

Так как значения — степени двойки:

// Бинарное представление
ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

Их можно комбинировать:

#include <stdio.h>
enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4};
int main() {
    int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101
    printf("%d", myDesign);
    return 0;
}

Вывод

5

Вывод 5 указывает, что активны и BOLD, и UNDERLINE.

Для проверки конкретного флага:

if (myDesign & ITALICS) {
    // обработать курсив
}

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

Язык C

  1. C# Hello World — создание вашего первого C# приложения
  2. Понимание ключевых слов и идентификаторов C#: правила, списки и лучшие практики
  3. Мастерство C# переменных и примитивных типов данных: полное руководство
  4. Операторы C# — исчерпывающее руководство по операторам в C#
  5. Освоение побитовых и сдвиговых операторов в C#: полное руководство
  6. Основы ввода-вывода в C#: Console.WriteLine, ReadLine и форматирование
  7. Выражения, операторы и блоки в C#: подробное руководство с примерами
  8. Освоение комментариев в C#: виды, лучшие практики и XML-документация
  9. Освоение оператора switch в C#: синтаксис, примеры и лучшие практики
  10. Тернарный оператор в C#: краткое руководство по условным выражениям