Pemrograman C

Cara menggunakan enum dalam Bahasa C

Cara menggunakan enum dalam Bahasa C
Program enum dalam bahasa pemrograman C digunakan untuk mendefinisikan nilai konstanta integral, yang sangat membantu dalam menulis program yang bersih dan mudah dibaca. Pemrogram biasanya menggunakan enumerasi untuk mendefinisikan konstanta integral bernama dalam program mereka untuk memberikan keterbacaan dan pemeliharaan perangkat lunak yang lebih baik. Artikel ini akan membahas enum secara detail.

Sintaksis

enum
Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
… ,
Enumeration_Constant_Element-n,
;

Nilai default Enumeration_Constant_Element-1 adalah 0, nilai Enumeration_Constant_Element-2 adalah 1, nilai Enumeration_Constant_Element-3 adalah 2, dan nilai Enumeration_Constant_Element-n adalah (n-1).

Menyelam Jauh ke dalam Enum

Sekarang, karena kita mengetahui sintaks untuk mendefinisikan tipe enumerasi, mari kita lihat sebuah contoh:

enum Kesalahan
IO_ERROR,
DISK_ERROR,
NETWORK_ERROR
;

Kata kunci “enum” harus selalu digunakan untuk menentukan jenis enumerasi. Jadi, setiap kali Anda ingin menentukan jenis enumerasi, Anda harus menggunakan kata kunci “enum” sebelumnya . Setelah kata kunci “enum”, Anda harus menggunakan pengenal yang valid untuk mendefinisikan .

Dalam contoh di atas, kompiler akan menetapkan IO_ERROR ke nilai integral: 0, DISK_ERROR ke nilai integral: 1 dan NETWORK_ERROR ke nilai integral: 2.  Secara default, elemen enum pertama selalu diberi nilai 0, elemen enum berikutnya diberi nilai 1, dan seterusnya.

Perilaku default ini dapat diubah jika perlu dengan menetapkan nilai integral konstan secara eksplisit, sebagai berikut:

enum Kesalahan
IO_ERROR = 2,
DISK_ERROR,
JARINGAN_ERROR = 8 ,
PRINT_ERROR
;

Dalam hal ini, IO_ERROR secara eksplisit ditetapkan ke nilai 2 oleh programmer, DISK_ERROR ditugaskan ke nilai 3 oleh compiler, NETWORK_ERROR secara eksplisit ditetapkan ke nilai 8 oleh programmer, dan PRINT_ERROR ditugaskan ke berikutnya nilai integral dari elemen enum sebelumnya NETWORK_ERROR (i.e., 9) oleh kompiler.

Jadi, Anda sekarang mengerti bagaimana mendefinisikan tipe enumerasi yang ditentukan pengguna di C. Apakah mungkin untuk mendeklarasikan variabel tipe enum (karena kami dapat mendeklarasikan variabel tipe integer)?  Ya itu! Anda dapat mendeklarasikan variabel enum sebagai berikut:

enum Kesalahan Hw_Error;

Sekali lagi, “enum” adalah kata kunci di sini, “Error” adalah jenis enum, dan  “Hw_Error” adalah variabel enum.

Sekarang kita akan melihat contoh berikut untuk memahami berbagai penggunaan enum:

  • Contoh 1: Penggunaan definisi enum default
  • Contoh 2: Penggunaan definisi enum khusus
  • Contoh 3: definisi enum menggunakan ekspresi konstan
  • Contoh 4: enum lingkup

Contoh 1: Penggunaan Definisi enum default

Dalam contoh ini, Anda akan belajar bagaimana mendefinisikan tipe enumerasi dengan nilai konstanta default. Kompiler akan menangani penetapan nilai default ke elemen enum. Di bawah ini, Anda akan melihat contoh program dan output yang sesuai.

#termasuk
/* Tentukan tipe enum */
enum Kesalahan
IO_ERROR,
DISK_ERROR,
NETWORK_ERROR
;
int utama()

enum Kesalahan Hw_Error; /* Membuat variabel enum*/
printf("Setel Hw_Error ke IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke DISK_ERROR\n");
Hw_Error = DISK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke NETWORK_ERROR\n");
Hw_Error = NETWORK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
kembali 0;

Contoh 2: Penggunaan Definisi enum Kustom

Dalam contoh ini, Anda akan belajar cara mendefinisikan tipe enumerasi dengan nilai konstanta khusus. Juga, contoh ini akan membantu Anda memahami bagaimana inisialisasi konstanta kustom dapat dilakukan dalam urutan acak apa pun. Dalam contoh ini, kami telah secara eksplisit mendefinisikan nilai konstan untuk 1st dan 3rd elemen enum (i.e., IO_ERROR dan NETWORK_ERROR, masing-masing), tetapi kami telah melewatkan inisialisasi eksplisit untuk 2dan dan 4ini elemen. Sekarang tanggung jawab kompiler untuk menetapkan nilai default ke 2dan dan 4ini elemen enum (i.e., DISK_ERROR dan PRINT_ERROR, masing-masing). DISK_ERROR akan ditetapkan ke nilai 3 dan PRINT_ERROR akan ditetapkan ke nilai 9. Di bawah ini, Anda akan melihat contoh program dan outputnya.

#termasuk
/* Tentukan jenis enum - Inisialisasi kustom*/
enum Kesalahan
IO_ERROR = 2,
DISK_ERROR,
JARINGAN_ERROR = 8,
PRINT_ERROR
;
int utama()

/* Deklarasi variabel enum*/
enum Kesalahan Hw_Error;
printf("Setel Hw_Error ke IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke DISK_ERROR\n");
Hw_Error = DISK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke NETWORK_ERROR\n");
Hw_Error = NETWORK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke PRINT_ERROR\n");
Hw_Error = PRINT_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
kembali 0;

Contoh 3: Definisi Enum Menggunakan Ekspresi Konstan

Dalam contoh ini, Anda akan belajar bagaimana menggunakan ekspresi konstanta untuk menentukan nilai konstan untuk elemen enumum.

#termasuk
/* Tentukan tipe enum - inisialisasi khusus menggunakan ekspresi konstan
ekspresi konstan digunakan di sini jika:
Sebuah. IO_ERROR dan
b. NETWORK_ERROR
Ini adalah cara yang tidak biasa untuk mendefinisikan elemen enum; namun, ini
program menunjukkan bahwa cara inisialisasi elemen enum ini dimungkinkan di c.
*/
enum Kesalahan
IO_ERROR = 1 + 2 * 3 + 4,
DISK_ERROR,
NETWORK_ERROR = 2 == 2,
PRINT_ERROR
;
int utama()

/* Deklarasi variabel enum*/
enum Kesalahan Hw_Error;
printf("Setel Hw_Error ke IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke DISK_ERROR\n");
Hw_Error = DISK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke NETWORK_ERROR\n");
Hw_Error = NETWORK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke PRINT_ERROR\n");
Hw_Error = PRINT_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
kembali 0;

Contoh 4: enum Lingkup

Dalam contoh ini, Anda akan mempelajari cara kerja aturan pelingkupan untuk enum. MAKRO (#define) dapat digunakan untuk mendefinisikan konstanta alih-alih enum, tetapi aturan pelingkupan tidak berfungsi untuk MAKRO.

#termasuk
int utama()

/* Tentukan tipe enum */
enum Kesalahan_1
IO_ERROR = 10,
DISK_ERROR,
JARINGAN_ERROR = 3,
PRINT_ERROR
;

/* Mendefinisikan tipe enum di inner scope*/
enum Kesalahan_1
IO_ERROR = 20,
DISK_ERROR,
JARINGAN_ERROR = 35,
PRINT_ERROR
;
/* Deklarasi variabel enum*/
enum Error_1 Hw_Error;
printf("Setel Hw_Error ke IO_ERROR\n");
Hw_Error = IO_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke DISK_ERROR\n");
Hw_Error = DISK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke NETWORK_ERROR\n");
Hw_Error = NETWORK_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);
printf("\nSetel Hw_Error ke PRINT_ERROR\n");
Hw_Error = PRINT_ERROR;
printf("Nilai Hw_Error = %d \n",Hw_Error);

kembali 0;

Perbandingan Antara enum dan makro

enum Makro
Aturan pelingkupan berlaku untuk enum. Aturan pelingkupan tidak berlaku untuk Makro.
Penetapan nilai Enum default terjadi secara otomatis.

Enum sangat membantu dalam mendefinisikan sejumlah besar konstanta. Kompiler mengambil inisialisasi nilai konstan default.

Nilai konstanta makro harus selalu disebutkan secara eksplisit oleh programmer.

Ini bisa menjadi proses yang membosankan untuk sejumlah besar konstanta karena programmer harus selalu secara manual mendefinisikan setiap nilai konstan saat mendefinisikan Makro.

Kesimpulan

Program enum di C dapat dianggap sebagai metode opsional untuk program mandiri atau proyek berukuran kecil karena programmer selalu dapat menggunakan makro daripada enum. Namun, programmer berpengalaman cenderung menggunakan enum daripada makro untuk proyek pengembangan perangkat lunak skala besar large. Ini membantu dalam menulis program yang bersih dan mudah dibaca.

SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...
Pertempuran untuk Tutorial Westnoth
The Battle for Wesnoth adalah salah satu game strategi open source terpopuler yang bisa kamu mainkan saat ini. Tidak hanya game ini telah dikembangkan...
0 A.D. tutorial
Dari sekian banyak game strategi di luar sana, 0 A.D. berhasil menonjol sebagai judul yang komprehensif dan permainan taktis yang sangat dalam meskipu...