C Programmēšana

Kā lietot enum C valodā

Kā lietot enum C valodā
Enum programma C programmēšanas valodā tiek izmantota integrālo nemainīgo vērtību noteikšanai, kas ir ļoti noderīgi, rakstot tīras un lasāmas programmas. Programmētāji parasti izmanto uzskaitījumu, lai definētu nosaukto neatņemamās konstantes savās programmās, lai nodrošinātu programmatūras labāku lasāmību un uzturēšanu. Šajā rakstā tiks detalizēti aplūkota enum.

Sintakse

enum
Uzskaites_konstantes_elements-1,
Uzskaites_konstantes_elements-2,
3. uzskaitījums,
… ,
Uzskaitījums_Konstantā_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 ienirstiet Enum

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

enum kļūda
IO_ERROR,
DISK_ERROR,
TĪKLA KĻŪDA
;

Atskaites veida definēšanai vienmēr jāizmanto atslēgvārds “enum”. Tāpēc vienmēr, kad vēlaties definēt uzskaites veidu, iepriekš jāizmanto atslēgvārds “enum” . Pēc atslēgvārda “enum” atslēgvārda definēšanai jāizmanto derīgs identifikators .

Iepriekš minētajā piemērā kompilators piešķirs IO_ERROR integrālvērtībai: 0, DISK_ERROR integrālvērtībai: 1 un NETWORK_ERROR integrālvē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.

Šo noklusējuma uzvedību vajadzības gadījumā var mainīt, nepārprotami piešķirot nemainīgo integrālo vērtību šādi:

enum kļūda
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8 ,
PRINT_ERROR
;

Šajā gadījumā IO_ERROR ir programmētājam nepārprotami piešķirts vērtībai 2, DISK_ERROR kompilators piešķir vērtībai 3, NETWORK_ERROR programmētājs skaidri piešķir vērtībai 8 un PRINT_ERROR tiek piešķirts nākamajai iepriekšējā uzskaites elementa NETWORK_ERROR (i.e., 9) sastādītājs.

Tātad, jūs tagad saprotat, kā definēt lietotāja definētu uzskaites tipu C. Vai ir iespējams deklarēt mainīgā lieluma tipu (kā mēs varam deklarēt vesela skaitļa mainīgo)?  Jā, tā ir! Enum mainīgo var deklarēt šādi:

enum kļūda Hw_Error;

Atkal šeit ir atslēgvārds “enum”, “Enum” tips ir “Error” un “Hw_Error” ir Enum mainīgais.

Tagad mēs aplūkosim šādus piemērus, lai izprastu dažādos enum veidus:

  • 1. piemērs: noklusējuma uzskaites definīcijas lietojums
  • 2. piemērs: Pielāgotas uzskaites definīcijas izmantošana
  • 3. piemērs: uzskaites definīcija, izmantojot nemainīgu izteiksmi
  • 4. piemērs: uzskaites darbības joma

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

Šajā piemērā jūs uzzināsiet, kā definēt uzskaites veidu ar noklusējuma nemainīgām vērtībām. Sastādītājs rūpēsies par noklusējuma vērtību piešķiršanu enum elementiem. Zemāk jūs redzēsiet programmas piemēru un atbilstošo izvadi.

# iekļaut
/ * Definējiet uzskaites veidu * /
enum kļūda
IO_ERROR,
DISK_ERROR,
TĪKLA KĻŪDA
;
int main ()

enum kļūda Hw_Error; / * Enum mainīgā izveide * /
printf ("Hw_Error iestatīšana uz IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
atgriešanās 0;

2. piemērs: Pielāgotas uzskaites definīcijas izmantošana

Šajā piemērā jūs uzzināsiet, kā definēt uzskaites veidu ar pielāgotu nemainīgu vērtību. Šis piemērs arī palīdzēs jums saprast, kā pielāgoto konstantu inicializēšanu var veikt jebkurā nejaušā secībā. Šajā piemērā mēs skaidri definējām 1 nemainīgo vērtībusv un 3rd enum elementi (t.i.e., IO_ERROR un NETWORK_ERROR), bet mēs esam izlaiduši skaidru 2nd un 4th elementi. Tagad kompilatora pienākums ir piešķirt noklusējuma vērtības 2nd un 4th enum elementi (t.i.e., 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 jūs redzēsiet programmas piemēru un izvadi.

# iekļaut
/ * Definējiet uzskaites veidu - pielāgota inicializācija * /
enum kļūda
IO_ERROR = 2,
DISK_ERROR,
NETWORK_ERROR = 8,
PRINT_ERROR
;
int main ()

/ * Deklarēt mainīgo lielumu * /
enum kļūda Hw_Error;
printf ("Hw_Error iestatīšana uz IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
atgriešanās 0;

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

Šajā piemērā jūs uzzināsiet, kā izmantot nemainīgo izteiksmi, lai definētu enum elementu nemainīgo vērtību.

# iekļaut
/ * Definējiet uzskaites veidu - pielāgotu inicializāciju, izmantojot nemainīgu izteiksmi
pastāvīga izteiksme šeit tiek izmantota:
a. IO_ERROR un
b. TĪKLA KĻŪDA
Tas ir neparasts veids, kā definēt enum elementus; tomēr tas
programma parāda, ka šāds enum elementu inicializācijas veids ir iespējams c.
* /
enum kļūda
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
NETWORK_ERROR = 2 == 2,
PRINT_ERROR
;
int main ()

/ * Deklarēt mainīgo lielumu * /
enum kļūda Hw_Error;
printf ("Hw_Error iestatīšana uz IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
atgriešanās 0;

4. piemērs: uzskaites darbības joma

Šajā piemērā jūs uzzināsiet, kā darbības joma noteikums darbojas enum. Konstantes noteikšanai, nevis enum, varēja izmantot MACRO (#define), taču MACRO mēroga noteikums nedarbojas.

# iekļaut
int main ()

/ * Definējiet uzskaites veidu * /
uzskaitījuma kļūda_1
IO_ERROR = 10,
DISK_ERROR,
NETWORK_ERROR = 3,
PRINT_ERROR
;

/ * Iekšējā diapazonā definējiet uzskaites veidu * /
uzskaitījuma kļūda_1
IO_ERROR = 20,
DISK_ERROR,
TĪKLS_KĻŪDA = 35,
PRINT_ERROR
;
/ * Deklarēt mainīgo lielumu * /
enum Error_1 Hw_Error;
printf ("Hw_Error iestatīšana uz IO_ERROR \ n");
Hw_Error = IO_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz DISK_ERROR \ n");
Hw_Error = DISK_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz NETWORK_ERROR \ n");
Hw_Error = NETWORK_ERROR;
printf ("Hw_Error =% d \ n" vērtība, Hw_Error);
printf ("\ nHw_Error iestatīšana uz PRINT_ERROR \ n");
Hw_Error = PRINT_ERROR;
printf ("Hw_Error =% d \ n vērtība, Hw_Error);

atgriešanās 0;

Enum un makro salīdzinājums

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

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

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

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

Secinājums

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

Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...
10 labākās spēles, kuras spēlēt Ubuntu
Windows platforma ir bijusi viena no dominējošajām spēļu platformām, jo ​​mūsdienās tiek attīstīts milzīgs spēļu skaits, lai atbalstītu Windows. Vai k...
5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...