Набрајања – enum¶
Набројиве константе су целобројне симболичке константе којима су вредности додељене експлицитно или имплицитно набрајањем њихових имена у низу.
Општи облик набрајања би био:
enum ime_nabrajanja { ime_konstante = vrednost,
....
ime_konstante = vrednost};
ime_nabrajanja
и ime_konstante
су идентификатори.
Вредности су целобројни изрази, а уколико се изостави додела, сматра се да је сваки наредни већи од претходног.
Такође, као и код структуре, може се дефинисати набројиви тип података.
Општи облик набројивог типа би био:
typedef enum { ime_konstante=vrednost,
....
ime_konstante=vrednost} Ime_типа;
Ime_типа
је идентификатор. Изоставља се ime_nabrajanja
.
Пример:
набрајање:
enum karte{
KARO,
PIK,
HERC,
TREF
};
набројиви тип:
typedef enum{
KARO,
PIK,
HERC,
TREF
} Karte;
Формално гледано, набројиви подаци су типа int
. Првом пољу се аутоматски
додељује целобројна вредност 0 и за свако следеће се повећава за 1.
На пример…
enum logicki {NE, DA};
…је набројиви тип назван logicki
са две набројиве константе од којих прва
(NE
) има вредност 0
а друга (DA
) вредност 1
.
На пример:
enum meseci {JAN = 1, FEB, MAR, APR, MAJ, JUN, JUL, AVG,SEP, OKT, NOV, DEC};
Набројива константа JAN
има вредност 1, а свака следећа за 1 већу од
претходне.
На пример:
typedef enum {CRNA, CRVENA, ZUTA, PLAVA, BELA} Boja;
Boja boja = CRVENA + 2;
Промењивој boja
била би додељена вредност PLAVA
.
Могуће је и експлицитно навођење целобројних вредности, на пример:
enum znak_karte {
KARO = 1,
PIK = 2,
HERC = 4,
TREF = 8
}
Набројиви типови могу да учествују у изградњи других сложених типова.
Пример програма за набрајање
#include <stdio.h>
enum dani
{
Pon,Uto,Sre,Cet,Pet,Sub,Ned
};
main()
{
enum dani danas=Sre;
if(danas==6||danas==7)//Ovde moze biti i uslov if(danas==Sub||danas==Ned)
{
printf("Dana nije radni dan ");
}
else
{
printf("Danas se radi ");
}
}