CATEGORII DOCUMENTE |
Enumerari
O enumerare este o multime de constante intregi ce pot lua toate valorile unei variabile de un anumit tip.
Enumerarile se definesc in acelasi mod ca si structurile, utilizand cuvantul cheie enum ce semnaleaza inceputul unui tip enumerare. Forma generala de definire a unei enumerari este:
enum nume_tip_enum lista_variabile;
unde atat nume_tip_enum, cat si lista_variabile sunt optionale.
Exemplu: Urmatorul fragment defineste o enumerare numita 'bancnota' cu care apoi se declara o enumerare numita 'bani' avand acest tip:
enum bancnota ;
enum bancnota bani;
Dandu-se aceasta definitie si declaratie, sunt valabile urmatoarele instructiuni:
bani = mie;
if (5*bani == cincimii) printf('Sunt 5000 lei.n');
Trebuie precizat ca fiecare enumerator este caracterizat printr-o valoare intreaga. Fara nici o alta initializare, valoarea primului enumerator este 0, a celui de-al doilea este 1, s.a.m.d. De aceea, instructiunea: printf ('%d %d, suta, mie);
va afisa pe ecran: 0 3
Se pot specifica valorile unuia sau mai multor simboluri folosind initializatori. De exemplu:
enum bancnota ;
face ca simbolurile din enumerarea bancnota sa aiba valorile:
suta = 0
douasute = 1
cincisute = 2
mie = 1000
cincimii = 1001
zecemii = 1002
Urmatorul fragment de program nu functioneaza, deoarece 'bani' este un intreg si nu un sir :
bani = cincimii;
printf ('%s', bani);
Nici acest program nu functioneaza:
gets (s);
strcpy (bani, s);
Pentru a afisa tipurile bancnotelor continute in enumerarea 'bani', se va scrie:
switch (bani)
Uneori pentru a translata valoarea unui enumerator in sirul corespunzator, se poate declara un tablou de siruri si utiliza valoarea enumeratorului ca index. De exemplu, urmatorul fragment va afisa sirul corespunzator:
char name[ ][20] = ;
. . . . . .
printf ('%s', name[bani]);
Fragmentul anterior va functiona numai daca nu se realizeaza initializarea simbolurilor, deoarece indexarea sirurilor incepe cu zero. Urmatorul program afiseaza numele bancnotelor:
# include <stdio.h>
enum bancnota ;
char name[][20]=
void main()
Daca variabilei uniune y din exemplul urmator i se aplica operatorul sizeof() vom gasi sizeof(y) = 8.
# include <stdio.h>
union y;
void main()
Deci compilatorul va retine valoarea celei mai largi tipuri de date din uniune.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 901
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved