Ц Програмирање

Како се користи енум у језику Ц

Како се користи енум у језику Ц
Програм енум у програмском језику Ц користи се за дефинисање интегралних константних вредности, што је врло корисно у писању чистих и читљивих програма. Програмери обично користе енумерацију да дефинишу именоване интегралне константе у својим програмима како би обезбедили бољу читљивост и одрживост софтвера. Овај чланак ће детаљно размотрити набрајање.

Синтакса

енум
Енумератион_Цонстант_Елемент-1,
Енумератион_Цонстант_Елемент-2,
Енумератион_Цонстант_Елемент-3,
… ,
Енумератион_Цонстант_Елемент-н,
;

Подразумевана вредност Енумератион_Цонстант_Елемент-1 је 0, вредност Енумератион_Цонстант_Елемент-2 је 1, вредност Енумератион_Цонстант_Елемент-3 је 2, а вредност Енумератион_Цонстант_Елемент-н је (н-1).

Дубоко зароните у Енум

Сада, пошто знамо синтаксу да дефинишемо тип набрајања, погледајмо пример:

енум грешка
ИО_ЕРРОР,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР
;

Кључна реч „енум“ увек се мора користити за дефинисање типа набрајања. Дакле, кад год желите да дефинишете тип набрајања, претходно морате да користите кључну реч „набрајање“ . Након кључне речи „енум“, морате користити важећи идентификатор да бисте дефинисали .

У горњем примеру, преводилац ће доделити ИО_ЕРРОР интегралној вредности: 0, ДИСК_ЕРРОР интегралној вредности: 1 и НЕТВОРК_ЕРРОР интегралној вредности: 2.  Подразумевано се првом елементу набрајања увек додељује вредност 0, следећем елементу набрајања додељује се вредност 1 итд.

Ово подразумевано понашање може се променити ако је потребно експлицитним додељивањем константне интегралне вредности, како следи:

енум грешка
ИО_ЕРРОР = 2,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР = 8 ,
ПРИНТ_ЕРРОР
;

У овом случају програмер експлицитно додељује вредност ИО_ЕРРОР вредности 2, ДИСК_ЕРРОР програмер додељује вредности 3, програмер НЕТВОРК_ЕРРОР експлицитно додељује вредност 8, а следећем ПРИНТ_ЕРРОР интегрална вредност претходног елемента набрајања НЕТВОРК_ЕРРОР (и.е., 9) од састављача.

Дакле, сада разумете како да дефинишете кориснички дефинисани тип набрајања у језику Ц. Да ли је могуће декларисати променљиву енум типа (као што можемо прогласити променљиву целобројног типа)?  Да, јесте! Можете променити енум променљиву на следећи начин:

енум Грешка Хв_Еррор;

Опет, овде је кључна реч „енум“, тип грешке „Грешка“, а променљива набрајања „Хв_Еррор“.

Сада ћемо погледати следеће примере да бисмо разумели различите употребе енум-а:

  • Пример 1: Подразумевана употреба дефиниције набрајања
  • Пример 2: Прилагођена употреба дефиниције набрајања
  • Пример 3: дефиниција набрајања помоћу константног израза
  • Пример 4: опсег набрајања

Пример 1: Употреба дефиниције подразумеваног броја

У овом примеру ћете научити како да дефинишете тип набрајања са подразумеваним константним вредностима. Компајлер ће се побринути за додељивање подразумеваних вредности елементима набрајања. Испод ћете видети пример програма и одговарајући излаз.

#инцлуде
/ * Дефинишите тип набрајања * /
енум грешка
ИО_ЕРРОР,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР
;
инт маин ()

енум Грешка Хв_Еррор; / * Креирање енум променљиве * /
принтф ("Постављање Хв_Еррор на ИО_ЕРРОР \ н");
Хв_Еррор = ИО_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ДИСК_ЕРРОР \ н");
Хв_Еррор = ДИСК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на НЕТВОРК_ЕРРОР \ н");
Хв_Еррор = НЕТВОРК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
ретурн 0;

Пример 2: Употреба прилагођене енум дефиниције

У овом примеру ћете научити како да дефинишете тип набрајања помоћу прилагођене константне вредности. Такође, овај пример ће вам помоћи да разумете како се иницијализација прилагођених константи може извршити било којим случајним редоследом. У овом примеру смо експлицитно дефинисали константну вредност за 1ст и 3рд елементи набрајања (и.е., ИО_ЕРРОР односно НЕТВОРК_ЕРРОР), али смо прескочили експлицитну иницијализацију за 2нд и 4тх елементи. Сада је одговорност компајлера да додели подразумеване вредности 2нд и 4тх елементи набрајања (и.е., ДИСК_ЕРРОР и ПРИНТ_ЕРРОР). ДИСК_ЕРРОР ће бити додељен вредности 3, а ПРИНТ_ЕРРОР биће додељен вредности 9. Испод ћете видети пример програма и резултате.

#инцлуде
/ * Дефинишите тип набрајања - Прилагођена иницијализација * /
енум грешка
ИО_ЕРРОР = 2,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР = 8,
ПРИНТ_ЕРРОР
;
инт маин ()

/ * Прогласи променљиву броја * /
енум Грешка Хв_Еррор;
принтф ("Постављање Хв_Еррор на ИО_ЕРРОР \ н");
Хв_Еррор = ИО_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ДИСК_ЕРРОР \ н");
Хв_Еррор = ДИСК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на НЕТВОРК_ЕРРОР \ н");
Хв_Еррор = НЕТВОРК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ПРИНТ_ЕРРОР \ н");
Хв_Еррор = ПРИНТ_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
ретурн 0;

Пример 3: Дефиниција енума коришћењем константног израза

У овом примеру ћете научити како да користите константни израз за дефинисање константне вредности за елементе набрајања.

#инцлуде
/ * Дефинишите тип набрајања - прилагођена иницијализација помоћу константног израза
овде се користи константни израз у случају:
а. ИО_ЕРРОР и
б. НЕТВОРК_ЕРРОР
Ово је необичан начин дефинисања елемената набрајања; међутим ово
програм показује да је овај начин иницијализације елемената набрајања могућ у ц.
* /
енум грешка
ИО_ЕРРОР = 1 + 2 * 3 + 4,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР = 2 == 2,
ПРИНТ_ЕРРОР
;
инт маин ()

/ * Прогласи променљиву броја * /
енум Грешка Хв_Еррор;
принтф ("Постављање Хв_Еррор на ИО_ЕРРОР \ н");
Хв_Еррор = ИО_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ДИСК_ЕРРОР \ н");
Хв_Еррор = ДИСК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на НЕТВОРК_ЕРРОР \ н");
Хв_Еррор = НЕТВОРК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ПРИНТ_ЕРРОР \ н");
Хв_Еррор = ПРИНТ_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
ретурн 0;

Пример 4: енум Сцопе

У овом примеру ћете научити како правило опсега ради за енум. МАКРО (#дефине) је могло да се користи за дефинисање константе уместо набрајања, али правило опсега не функционише за МАКРО.

#инцлуде
инт маин ()

/ * Дефинишите тип набрајања * /
енум Грешка_1
ИО_ЕРРОР = 10,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР = 3,
ПРИНТ_ЕРРОР
;

/ * Дефинишите тип набрајања у унутрашњем опсегу * /
енум Грешка_1
ИО_ЕРРОР = 20,
ДИСК_ЕРРОР,
НЕТВОРК_ЕРРОР = 35,
ПРИНТ_ЕРРОР
;
/ * Прогласи променљиву броја * /
енум Еррор_1 Хв_Еррор;
принтф ("Постављање Хв_Еррор на ИО_ЕРРОР \ н");
Хв_Еррор = ИО_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ДИСК_ЕРРОР \ н");
Хв_Еррор = ДИСК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на НЕТВОРК_ЕРРОР \ н");
Хв_Еррор = НЕТВОРК_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);
принтф ("\ нПостављање Хв_Еррор на ПРИНТ_ЕРРОР \ н");
Хв_Еррор = ПРИНТ_ЕРРОР;
принтф ("Вредност Хв_Еррор =% д \ н", Хв_Еррор);

ретурн 0;

Поређење између набрајања и макронаредбе

Енум Макро
За енум се примењује правило опсега. Правило опсега није применљиво за Макро.
Подразумевана додела вредности Енум се дешава аутоматски.

Енум је веома користан у дефинисању великог броја константи. Компајлер узима подразумевану иницијализацију константне вредности.

Програмер мора увек изричито да помене вредности макро константи.

Ово би могао бити напоран процес за велики број константи, јер програмер увек мора ручно да дефинише сваку константну вредност док дефинише Макро.

Закључак

Енум програм на Ц-у могао би се сматрати опционом методом за самосталне програме или мале пројекте, јер програмери увек могу да користе макро уместо енум. Међутим, искусни програмери обично користе енум преко макронаредбе за велике пројекте развоја софтвера. Ово помаже у писању чистих и читљивих програма.

Битка за Веснотх 1.13.6 Развој објављен
Битка за Веснотх 1.13.6 објављено прошлог месеца, шесто је развојно издање у издању 1.13.к сериес и доноси низ побољшања, посебно корисничког интерфеј...
Како инсталирати Леагуе Оф Легендс на Убунту 14.04
Ако сте љубитељ Леагуе оф Легендс, ово је прилика да тестирате Леагуе оф Легендс. Имајте на уму да је ЛОЛ подржан на ПлаиОнЛинук ако сте корисник лину...
Инсталирајте најновију ОпенРА Стратеги Гаме на Убунту Линук
ОпенРА је Либре / Фрее Реал Тиме стратешки механизам који ствара ране Вествоод игре попут класичне Цомманд & Цонкуер: Ред Алерт. Дистрибуирани модови ...