Menguasai Enumerasi C: Definisi, Deklarasi, dan Operasi Flag
Enumerasi C
Jelajahi cara mendefinisikan, mendeklarasikan, dan memanfaatkan enum dalam C—lengkap dengan contoh praktis, teknik flag, dan wawasan ukuran.
Dalam C, enumeration (enum) adalah tipe yang mengelompokkan serangkaian konstanta integral bernama, menawarkan intent yang lebih jelas dan keamanan tipe waktu kompilasi.
enum flag {const1, const2, ..., constN}; Secara default, const1 sama dengan 0, const2 sama dengan 1, dan seterusnya. Anda dapat mengganti nilai ini pada saat deklarasi jika diperlukan.
// Mengubah konstanta enum enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3, };
Deklarasi Tipe Enumerasi
Mendefinisikan enum menciptakan tipe baru yang dapat digunakan untuk variasi. Berikut cara mendeklarasikan dan membuat instance-nya.
enum boolean {false, true}; enum boolean check; // deklarasi variabel Variabel check kini bertipe enum boolean. Nilainya memetakan ke false = 0 dan true = 1.
enum boolean {false, true} check;
Contoh: Enumerasi Hari
#include <stdio.h> enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; int main() { enum week today = Wednesday; printf("Day %d", today + 1); return 0; } Output
Day 4
Mengapa Menggunakan Enum?
Variabel enum menyimpan satu nilai bernama, membuat kode terdokumentasi sendiri. Mereka juga menempati penyimpanan yang sama seperti int secara default, biasanya 4 byte pada sebagian besar platform.
#include <stdio.h> enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card; int main() { card = club; printf("Ukuran variabel enum = %d byte", sizeof(card)); return 0; } Output
Ukuran variabel enum = 4 byte
Ukuran ini konsisten dengan tipe int yang mendasarinya, meski ukuran yang tepat dapat bervariasi menurut kompiler dan arsitektur.
Menggunakan Enum untuk Flag
Enum unggul dalam mewakili flag ketika setiap konstanta adalah distinct power of two. Ini memungkinkan Anda untuk menggabungkan flag dengan bitwise OR dan mengujinya dengan bitwise AND.
#include <stdio.h> enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button; Karena nilai-nilai adalah power of two:
// Representasi biner ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
Anda dapat menggabungkannya:
#include <stdio.h> enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4}; int main() { int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101 printf("%d", myDesign); return 0; } Output
5
Output 5 menunjukkan bahwa BOLD dan UNDERLINE aktif.
Untuk memeriksa flag tertentu:
if (myDesign & ITALICS) { // handle italics } Sementara Anda dapat mencapai banyak hasil tanpa enum, mereka menyediakan cara yang andal dan aman tipe untuk mengelola konstanta terkait—terutama untuk operasi flag.