Kā lietot enum C valodā

How Use Enum C Language



Enum programma C programmēšanas valodā tiek izmantota, lai definētu neatņemamas konstantas vērtības, kas ir ļoti noderīgi, rakstot tīras un lasāmas programmas. Programmētāji parasti izmanto uzskaiti, lai savās programmās definētu nosauktas integrālās konstantes, lai nodrošinātu labāku programmatūras lasāmību un apkopi. Šajā rakstā tiks detalizēti apspriests enum.

Sintakse

enum <Enum tipa nosaukums> {
Uzskaitīšanas_Constant_Element-1,
Uzskaitīšanas_Constant_Element-2,
Uzskaitīšanas_Constant_Element-3,
…… .........,
Uzskaitīšanas_Constant_Element-n,
};

Enumeration_Constant_Element-1 noklusējuma vērtība ir 0, Enumeration_Constant_Element-2 vērtība ir 1, Enumeration_Constant_Element-3 vērtība ir 2 un Enumeration_Constant_Element-n vērtība ir (n-1).







Dziļi ienirt Enumā

Tā kā mēs zinām sintaksi, lai definētu uzskaitījuma veidu, apskatīsim piemēru:



enumKļūda{
IO_ERROR,
DISK_ERROR,
TĪKLA KĻŪDA
};

Uzskaitīšanas veida noteikšanai vienmēr jāizmanto atslēgvārds enum. Tātad, vienmēr, kad vēlaties definēt uzskaitījuma veidu, iepriekš jāizmanto atslēgvārds enum. Pēc atslēgvārda enum, lai definētu, jāizmanto derīgs identifikators.



Iepriekš minētajā piemērā kompilators piešķirs IO_ERROR integrālajai vērtībai: 0, DISK_ERROR-integrālajai vērtībai: 1 un NETWORK_ERROR-integrālajai vērtībai: 2. Pēc noklusējuma pirmajam enum elementam vienmēr tiek piešķirta vērtība 0, nākamajam enum-elementam tiek piešķirta vērtība 1 utt.





Ja nepieciešams, šo noklusējuma darbību var mainīt, nepārprotami piešķirot pastāvīgo integrālo vērtību, kā norādīts tālāk.

enumKļūda{
IO_ERROR= 2,
DISK_ERROR,
TĪKLA KĻŪDA= 8 ,
PRINT_ERROR
};

Šādā gadījumā programmētājs programmai IO_ERROR nepārprotami piešķir vērtību 2, kompilētājs DISK_ERROR piešķir vērtību 3, programmētājs NETWORK_ERROR nepārprotami piešķir vērtību 8 un PRINT_ERROR piešķir nākamajam. sastādītāja iepriekšējā enum elementa NETWORK_ERROR (ti, 9) neatņemama vērtība.



Tātad, jūs tagad saprotat, kā definēt lietotāja definētu uzskaitījuma veidu C. Vai ir iespējams deklarēt enum tipa mainīgo (kā mēs varam deklarēt veselu skaitļa tipa mainīgo)? Jā, tā ir! Mainīgo enum varat deklarēt šādi:

enumKļūda Hw_Error;

Atkal, atslēgvārds šeit ir enum, kļūda ir enum tips, un Hw_Error ir mainīgais mainīgais.

Tagad mēs aplūkosim šādus piemērus, lai saprastu dažādus enum lietojumus:

  • 1. piemērs: Enum definīcijas noklusējuma lietojums
  • 2. piemērs: pielāgota enum definīcijas izmantošana
  • 3. piemērs: enum definīcija, izmantojot nemainīgu izteiksmi
  • 4. piemērs: enum tvērums

1. piemērs: noklusējuma enum Definīcija Lietošana

Šajā piemērā jūs uzzināsit, kā definēt uzskaitījuma tipu ar noklusējuma konstantām vērtībām. Kompilators parūpēsies par noklusējuma vērtību piešķiršanu enum elementiem. Zemāk redzēsit programmas piemēru un atbilstošo izvadi.

#iekļaut

/ * Definējiet enum veidu */
enumKļūda{
IO_ERROR,
DISK_ERROR,
TĪKLA KĻŪDA
};

intgalvenais()
{
enumKļūda Hw_Error; /* Izveido enum mainīgo*/

printf ('Hw_Error iestatīšana uz IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz NETWORK_ERROR n');
Hw_Error=TĪKLA KĻŪDA;
printf ('Hw_Error vērtība = %d n',Hw_Error);

atgriezties 0;
}

https://lh6.googleusercontent.com/0CHtUqkuIA-okDEPI0_5fZLU6lZ6Exz6DK4uUr63k5Ros863eqC-HmrvZ_LZBKbEvqeCVMCsnvXXhfrYJrBaxxfZBWoiMOhzApzXey4uUr63k5Ros863eqC-HmrvZ_LZBKbEvqeCVMCsnvXXhfrYJrBaxxfZBVoiMOhzAQPzXey4

2. piemērs. Pielāgota enum definīcijas izmantošana

Šajā piemērā jūs uzzināsit, kā definēt uzskaitījuma veidu ar pielāgotu konstantu vērtību. Šis piemērs arī palīdzēs jums saprast, kā pielāgotās konstantes var inicializēt jebkurā nejaušā secībā. Šajā piemērā mēs esam skaidri definējuši konstantu vērtību 1stun 3rdenum elementi (t.i., attiecīgi IO_ERROR un NETWORK_ERROR), taču mēs esam izlaiduši nepārprotamo 2 inicializācijundun 4tūkstelementi. Tagad kompilatora pienākums ir piešķirt noklusējuma vērtības 2ndun 4tūkstenum elementi (t.i., attiecīgi DISK_ERROR un PRINT_ERROR). DISK_ERROR tiks piešķirta vērtībai 3, un PRINT_ERROR tiks piešķirta vērtībai 9. Zemāk redzēsit parauga programmu un izvadi.

#iekļaut

/* Nosakiet enum veidu - pielāgota inicializācija*/
enumKļūda{
IO_ERROR= 2,
DISK_ERROR,
TĪKLA KĻŪDA= 8,
PRINT_ERROR
};

intgalvenais()
{

/* Deklarēt mainīgo mainīgo*/
enumKļūda Hw_Error;

printf ('Hw_Error iestatīšana uz IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz NETWORK_ERROR n');
Hw_Error=TĪKLA KĻŪDA;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

atgriezties 0;
}

https://lh6.googleusercontent.com/hKtv00Hj7iPnnlNhC7mu1v7hzPhB64C9nyHwjB6oQgyCyEwOgiLSYWDOxvQCDrhumn4IzqhkN4qF9HcuGZ9thqlBLy6vzwxwv

3. piemērs: Enum definīcija, izmantojot nemainīgu izteiksmi

Šajā piemērā jūs uzzināsit, kā izmantot konstantu izteiksmi, lai definētu konstantu vērtību enum elementiem.

#iekļaut

/* Definējiet enum veidu - pielāgota inicializācija, izmantojot pastāvīgu izteiksmi
pastāvīga izteiksme šeit tiek izmantota šādos gadījumos:
a. IO_ERROR un
b. TĪKLA KĻŪDA
Tas ir neparasts veids, kā definēt enum elementus; tomēr šis
programma parāda, ka šāds enum elementu inicializācijas veids ir iespējams c.
* /


enumKļūda{
IO_ERROR= 1 + 2 * 3 + 4,
DISK_ERROR,
TĪKLA KĻŪDA= 2 == 2,
PRINT_ERROR
};

intgalvenais()
{

/* Deklarēt mainīgo mainīgo*/
enumKļūda Hw_Error;

printf ('Hw_Error iestatīšana uz IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz NETWORK_ERROR n');
Hw_Error=TĪKLA KĻŪDA;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

atgriezties 0;
}

https://lh4.googleusercontent.com/9FAbPOnM95LiP_UQvg40oHSW4sv34aqpFgasbHMiy06Z_rKEom81TuMCVsfxWaZedtQOMEQx7ef_5qEfRVcNrUvhitDzOXCYT

4. piemērs: enum Darbības joma

Šajā piemērā jūs uzzināsit, kā darbības noteikšanas noteikums darbojas enum. MACRO (#define) varēja izmantot, lai definētu konstanti, nevis enum, bet darbības jomas noteikums MACRO nedarbojas.

#iekļaut

intgalvenais()
{

/ * Definējiet enum veidu */
enumKļūda_1{
IO_ERROR= 10,
DISK_ERROR,
TĪKLA KĻŪDA= 3,
PRINT_ERROR
};


{

/* Definējiet enum veidu iekšējā tvērumā*/
enumKļūda_1{
IO_ERROR= divdesmit,
DISK_ERROR,
TĪKLA KĻŪDA= 35,
PRINT_ERROR
};

/* Deklarēt mainīgo mainīgo*/
enumKļūda_1 Hw_Error;
printf ('Hw_Error iestatīšana uz IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz NETWORK_ERROR n');
Hw_Error=TĪKLA KĻŪDA;
printf ('Hw_Error vērtība = %d n',Hw_Error);

printf (' nIestatot Hw_Error uz PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('Hw_Error vērtība = %d n',Hw_Error);
}
atgriezties 0;
}

Enum un makro salīdzinājums

Enum Makro
Darbības jomas noteikums ir piemērojams enum. Mērīšanas noteikums nav piemērojams makro.
Noklusējuma Enum vērtības piešķiršana notiek automātiski.

Enum ir ļoti noderīgs, nosakot lielu konstantu skaitu. Kompilators veic noklusējuma nemainīgās vērtības inicializāciju.

Programmētājam vienmēr ir skaidri jānorāda makro konstantu vērtības.

Tas varētu būt garlaicīgs process lielam skaitam konstantu, jo programmētājam vienmēr ir manuāli jānosaka katra konstanta vērtība, vienlaikus nosakot makro.

Secinājums

Enum programmu C var uzskatīt par izvēles metodi atsevišķām programmām vai maza izmēra projektiem, jo ​​programmētāji vienmēr var izmantot makro, nevis enum. Tomēr pieredzējuši programmētāji mēdz izmantot enum over macro liela mēroga programmatūras izstrādes projektiem. Tas palīdz rakstīt tīras un lasāmas programmas.