C Programlama

C Dilinde enum nasıl kullanılır

C Dilinde enum nasıl kullanılır
C programlama dilindeki enum programı, temiz ve okunabilir programlar yazmada çok yardımcı olan integral sabit değerleri tanımlamak için kullanılır. Programcılar normalde yazılımın daha iyi okunabilirliğini ve sürdürülebilirliğini sağlamak için programlarında adlandırılmış integral sabitlerini tanımlamak için numaralandırmayı kullanırlar. Bu makale enum'u ayrıntılı olarak tartışacak.

Sözdizimi

Sıralama
Numaralandırma_Sabit_Element-1,
Numaralandırma_Sabit_Element-2,
Numaralandırma_Constant_Element-3,
… ,
Numaralandırma_Constant_Element-n,
;

Enumeration_Constant_Element-1'in varsayılan değeri 0'dır, Enumeration_Constant_Element-2'nin değeri 1'dir, Enumeration_Constant_Element-3'ün değeri 2'dir ve Enumeration_Constant_Element-n'nin değeri (n-1)'dir.

Enum'a Derin Bakış

Şimdi, numaralandırma türünü tanımlamak için sözdizimini bildiğimize göre, bir örneğe bakalım:

numaralandırma Hatası
IO_ERROR,
DİSK HATASI,
AĞ HATASI
;

Numaralandırma türünü tanımlamak için her zaman "enum" anahtar sözcüğü kullanılmalıdır. Bu nedenle, bir numaralandırma türü tanımlamak istediğinizde, önce "enum" anahtar sözcüğünü kullanmalısınız . “Enum” anahtar sözcüğünden sonra, tanımlama için geçerli bir tanımlayıcı kullanmalısınız .

Yukarıdaki örnekte, derleyici, integral değerine IO_ERROR: 0, DISK_ERROR: integral değerine: 1 ve NETWORK_ERROR: integral değerine: 2 atayacaktır.  Varsayılan olarak, ilk numaralandırma elemanına her zaman 0 değeri atanır, sonraki numaralandırma elemanına 1 değeri atanır ve bu böyle devam eder.

Bu varsayılan davranış, gerekirse, sabit integral değeri açıkça aşağıdaki gibi atanarak değiştirilebilir:

numaralandırma Hatası
IO_ERROR = 2,
DİSK HATASI,
AĞ HATA = 8 ,
PRINT_ERROR
;

Bu durumda, IO_ERROR, programcı tarafından açıkça 2 değerine, DISK_ERROR, derleyici tarafından 3 değerine, NETWORK_ERROR, programcı tarafından 8 değerine açıkça atanır ve PRINT_ERROR, bir sonraki değere atanır. önceki numaralandırma elemanının NETWORK_ERROR (i.e., 9) derleyici tarafından.

Artık C'de kullanıcı tanımlı bir numaralandırma tipinin nasıl tanımlanacağını anlıyorsunuz. Enum türünde bir değişken bildirmek mümkün mü (tamsayı türünde bir değişken bildirebileceğimiz gibi)?  Evet öyle! Enum değişkenini aşağıdaki gibi bildirebilirsiniz:

numaralandırma Hatası Hw_Error;

Yine burada "enum" anahtar kelimedir, "Error" numaralandırma türüdür ve  "Hw_Error" bir numaralandırma değişkenidir.

Şimdi enum'un çeşitli kullanımlarını anlamak için aşağıdaki örneklere bakacağız:

  • Örnek 1: Varsayılan numaralandırma tanımı kullanımı
  • Örnek 2: Özel numaralandırma tanımı kullanımı
  • Örnek 3: sabit ifade kullanarak numaralandırma tanımı
  • Örnek 4: enum kapsamı

Örnek 1: Varsayılan numaralandırma Tanım Kullanım

Bu örnekte, numaralandırma türünü varsayılan sabit değerlerle nasıl tanımlayacağınızı öğreneceksiniz. Derleyici, enum öğelerine varsayılan değerleri atamakla ilgilenecektir. Aşağıda, örnek programı ve ilgili çıktıyı göreceksiniz.

#Dahil etmek
/* Enum türünü tanımlayın */
numaralandırma Hatası
IO_ERROR,
DİSK HATASI,
AĞ HATASI
;
int ana()

numaralandırma Hatası Hw_Error; /* enum değişkeni yaratılıyor*/
printf("Hw_Error'u IO_ERROR'a Ayarlamak\n");
Hw_Error = IO_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı DISK_ERROR olarak ayarlamak\n");
Hw_Error = DISK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı NETWORK_ERROR olarak ayarlamak\n");
Hw_Error = NETWORK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
0 döndür;

Örnek 2: Özel enum Tanımı Kullanımı

Bu örnekte, numaralandırma türünü özel bir sabit değerle nasıl tanımlayacağınızı öğreneceksiniz. Ayrıca bu örnek, özel sabitlerin herhangi bir rastgele sırada nasıl başlatılabileceğini anlamanıza yardımcı olacaktır. Bu örnekte, 1 için sabit değeri açıkça tanımladıkAziz ve 3rd enum elemanları (i.e., Sırasıyla IO_ERROR ve NETWORK_ERROR), ancak 2 için açık başlatmayı atladıknd ve 4inci elementler. 2'ye varsayılan değerleri atamak artık derleyicinin sorumluluğundadırnd ve 4inci enum elemanları (i.e., Sırasıyla DISK_ERROR ve PRINT_ERROR). DISK_ERROR 3 değerine, PRINT_ERROR 9 değerine atanacak. Aşağıda, örnek programı ve çıktısını göreceksiniz.

#Dahil etmek
/* Enum türünü tanımlayın - Özel başlatma*/
numaralandırma Hatası
IO_ERROR = 2,
DİSK HATASI,
AĞ HATA = 8,
PRINT_ERROR
;
int ana()

/* enum değişkeni bildir*/
numaralandırma Hatası Hw_Error;
printf("Hw_Error'u IO_ERROR'a Ayarlamak\n");
Hw_Error = IO_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı DISK_ERROR olarak ayarlamak\n");
Hw_Error = DISK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı NETWORK_ERROR olarak ayarlamak\n");
Hw_Error = NETWORK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'u PRINT_ERROR olarak ayarlamak\n");
Hw_Error = PRINT_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
0 döndür;

Örnek 3: Sabit İfade Kullanarak Enum Tanımı

Bu örnekte, enum öğelerinin sabit değerini tanımlamak için sabit ifadesinin nasıl kullanılacağını öğreneceksiniz.

#Dahil etmek
/* Enum türünü tanımlayın - sabit ifade kullanarak özel başlatma
sabit ifade şu durumlarda kullanılır:
bir. IO_ERROR ve
b. AĞ HATASI
Bu, enum öğelerini tanımlamanın alışılmadık bir yoludur; ama, bu
program, bu şekilde enum elemanlarının başlatılmasının c'de mümkün olduğunu gösterir.
*/
numaralandırma Hatası
IO_ERROR = 1 + 2 * 3 + 4,
DİSK HATASI,
NETWORK_ERROR = 2 == 2,
PRINT_ERROR
;
int ana()

/* enum değişkeni bildir*/
numaralandırma Hatası Hw_Error;
printf("Hw_Error'u IO_ERROR'a Ayarlamak\n");
Hw_Error = IO_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı DISK_ERROR olarak ayarlamak\n");
Hw_Error = DISK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı NETWORK_ERROR olarak ayarlamak\n");
Hw_Error = NETWORK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'u PRINT_ERROR olarak ayarlamak\n");
Hw_Error = PRINT_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
0 döndür;

Örnek 4: enum Kapsamı

Bu örnekte, enum için kapsam kuralının nasıl çalıştığını öğreneceksiniz. Bir sabit tanımlamak için numaralandırma yerine bir MAKRO (#define) kullanılabilirdi, ancak kapsam kuralı MAKRO için çalışmaz.

#Dahil etmek
int ana()

/* Enum türünü tanımlayın */
numaralandırma Hata_1
IO_ERROR = 10,
DİSK HATASI,
NETWORK_ERROR = 3,
PRINT_ERROR
;

/* Enum türünü iç kapsamda tanımlayın*/
numaralandırma Hata_1
IO_ERROR = 20,
DİSK HATASI,
AĞ HATA = 35,
PRINT_ERROR
;
/* enum değişkeni bildir*/
enum Error_1 Hw_Error;
printf("Hw_Error'u IO_ERROR'a Ayarlamak\n");
Hw_Error = IO_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı DISK_ERROR olarak ayarlamak\n");
Hw_Error = DISK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı NETWORK_ERROR olarak ayarlamak\n");
Hw_Error = NETWORK_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);
printf("\nHw_Error'ı PRINT_ERROR olarak ayarlamak\n");
Hw_Error = PRINT_ERROR;
printf("Hw_Error Değeri = %d \n",Hw_Error);

0 döndür;

enum ve makro arasındaki karşılaştırma

Sıralama Makro
Kapsam belirleme kuralı enum için geçerlidir. Kapsam belirleme kuralı Makro için geçerli değil.
Varsayılan Numaralandırma değeri ataması otomatik olarak gerçekleşir.

Enum, çok sayıda sabitin tanımlanmasında çok yararlıdır. Derleyici varsayılan sabit değer başlatmayı alır.

Makro sabit değerleri her zaman programcı tarafından açıkça belirtilmelidir.

Programcının Makroyu tanımlarken her bir sabit değeri her zaman manuel olarak tanımlaması gerektiğinden, bu çok sayıda sabit için sıkıcı bir süreç olabilir.

Sonuç

C'deki enum programı, programcılar her zaman bir numaralandırma yerine makro kullanabildikleri için bağımsız programlar veya küçük boyutlu projeler için isteğe bağlı bir yöntem olarak düşünülebilir. Bununla birlikte, deneyimli programcılar, büyük ölçekli yazılım geliştirme projeleri için enum over macro kullanma eğilimindedir. Bu, temiz ve okunabilir programlar yazmaya yardımcı olur.

El Takibiyle Oynanabilecek En İyi Oyunlar
Oculus Quest kısa süre önce, kontrolörler olmadan elle takip etme harika fikrini tanıttı. Resmi olarak veya SideQuest aracılığıyla destek sağlayan sür...
Tam Ekran Linux Uygulamalarında ve Oyunlarında OSD Yerleşimi Nasıl Gösterilir
Tam ekran oyunlar oynamak veya uygulamaları dikkat dağıtmayan tam ekran modunda kullanmak, bir panelde veya görev çubuğunda görünen ilgili sistem bilg...
En İyi 5 Oyun Yakalama Kartı
YouTube'da oyun akışlarını hepimiz gördük ve sevdik. PewDiePie, Jakesepticye ve Markiplier, oyun deneyimlerini yükleyerek ve izleyicileri en yeni oyun...