Найти в Дзене
D21nk Master

Одной операцией несколько констант без регистрации и смс

В языке си есть ещё одна конструкция называемой перечислением.С её помощью можно быстро создать блок констант всего лишь одной операцией.Для чего это нужно? Запомнить числа,которые на что-либо влияют довольно не легко,учитывая то,что эти самые числа используются только в определённых функциях,в других функциях те же числа делают совершенно другое. За пример можно взять недавнюю нашу тему-разбор цветов под линукс и виндовс.Куда легче запомнить,что слово RED отвечает за красный цвет,чем число 31 в линукс или число 1 в виндовс. Создавать каждую константу в отдельной операции-муторно,нам же подавай всё,сразу и желательно одной операцией.Перед новой конструкцией разберём как бы мы создавали нужные константы: //Можно просто через define #define RED 31 #define GREEN 32 //Можно константами const char RED=31; const GREEN=32; Хорошо,если их нужно всего две,а если нужно восемь? Вот давайте и создадим сразу восемь констант с помощью перечисления(enum): //слово enum,фигурные скобки,внутри словам

В языке си есть ещё одна конструкция называемой перечислением.С её помощью можно быстро создать блок констант всего лишь одной операцией.Для чего это нужно?

Запомнить числа,которые на что-либо влияют довольно не легко,учитывая то,что эти самые числа используются только в определённых функциях,в других функциях те же числа делают совершенно другое.

За пример можно взять недавнюю нашу тему-разбор цветов под линукс и виндовс.Куда легче запомнить,что слово RED отвечает за красный цвет,чем число 31 в линукс или число 1 в виндовс.

Создавать каждую константу в отдельной операции-муторно,нам же подавай всё,сразу и желательно одной операцией.Перед новой конструкцией разберём как бы мы создавали нужные константы:

//Можно просто через define

#define RED 31

#define GREEN 32

//Можно константами

const char RED=31;

const GREEN=32;

Хорошо,если их нужно всего две,а если нужно восемь? Вот давайте и создадим сразу восемь констант с помощью перечисления(enum):

//слово enum,фигурные скобки,внутри словами записываем значения

enum {BLACK=30,RED,GREEN,BROWN,BLUE,PURP,YELLOW,GRAY};

У enum есть несколько особенностей:если вообще не присваивать никаких значений константам,константы считаются слева на право от 0 до n-1,если было присвоено в любой части перечисления любое значение-следующие числа будут так же увеличиваться от предыдущего значения.

То есть в примере выше я присвоил константе BLACK число 30,значит все следующие числа будут отталкиваться от предыдущего,просто добавляя единицу.

Причём значения могут быть и отрицательными.

Перечислению так же можно задавать имя и вообще работать как со структурами,за исключением лишь того,что перечисления оперируют лишь цифрами:

//создадим именованное перечисление

enum numbers{ONE=2,TWO,THREE};

int main()

{

enum numbers a,b,c;

a=THREE;

printf("%d\n",a);

return 0;

}

Откровенно признаться,пользы от этого я не вижу,но если встретите такое в чьём нибудь коде-будите знать,что такое возможно.

Так же,как у структур перечислениям доступны алиасы:

typedef enum numbers

{

ONE=1;

TWO;

THREE;

}num;

Домашнее задание:под линукс и виндовс создать свои константы цветов и вывести с их помощью различного цвета текст.

С вами был D21nkMaster.Всего доброго!