כיצד להשתמש ב- enum בשפת C

How Use Enum C Language



תוכנית ה- enum בשפת התכנות C משמשת להגדרת ערכים קבועים אינטגרליים, דבר שעוזר מאוד בכתיבת תוכניות נקיות וקריאות. מתכנתים בדרך כלל משתמשים במניין כדי להגדיר קבועים אינטגרליים בשם בתוכניות שלהם כדי לספק קריאה ותחזוקה טובים יותר של התוכנה. מאמר זה ידון בפירוט ב- enum.

תחביר

enum <שם סוג Enum> {
Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
…… .........,
Enumeration_Constant_Element-נ,
};

ערך ברירת המחדל של Enumeration_Constant_Element-1 הוא 0, הערך של Enumeration_Constant_Element-2 הוא 1, הערך של Enumeration_Constant_Element-3 הוא 2, והערך של Enumeration_Constant_Element-n הוא (n-1).







צלילה עמוקה לתוך Enum

כעת, מכיוון שאנו מכירים את התחביר להגדרת סוג הספירה, הבה נבחן דוגמה:



enumשְׁגִיאָה{
IO_ERROR,
DISK_ERROR,
בעיה ברשת
};

תמיד יש להשתמש במילת המפתח enum כדי להגדיר את סוג הספירה. לכן, בכל פעם שתרצה להגדיר סוג ספירה, עליך להשתמש במילת המפתח enum לפני. לאחר מילת המפתח enum, עליך להשתמש במזהה חוקי כדי להגדיר את.



בדוגמה שלמעלה, המהדר יקצה את IO_ERROR לערך האינטגרלי: 0, DISK_ERROR לערך האינטגרלי: 1 ו- NETWORK_ERROR לערך האינטגרל: 2. כברירת מחדל, האלמנט הראשון תמיד מוקצה לערך 0, הבא ל- enum-element מוקצה הערך 1 וכן הלאה.





ניתן לשנות התנהגות ברירת מחדל זו במידת הצורך על ידי הקצאת ערך האינטגרל הקבוע במפורש, כדלקמן:

enumשְׁגִיאָה{
IO_ERROR= 2,
DISK_ERROR,
בעיה ברשת= 8 ,
PRINT_ERROR
};

במקרה זה, ה- IO_ERROR מוקצה במפורש לערך 2 על ידי המתכנת, DISK_ERROR מוקצה לערך 3 על ידי המהדר, NETWORK_ERROR מוקצה במפורש לערך 8 על ידי המתכנת, ו- PRINT_ERROR מוקצה למשנהו הבא ערך אינטגרלי של רכיב ה- enum הקודם NETWORK_ERROR (כלומר, 9) על ידי המהדר.



אז עכשיו אתה מבין איך להגדיר סוג ספירה מוגדר משתמש ב- C. האם אפשר להכריז על משתנה מסוג enum (כפי שנוכל להכריז על משתנה מסוג שלם)? כן זה כן! אתה יכול להכריז על משתנה enum כדלקמן:

enumשגיאה Hw_Error;

שוב, enum היא מילת המפתח כאן, שגיאה היא סוג enum ו- Hw_Error הוא משתנה enum.

כעת נבחן את הדוגמאות הבאות כדי להבין את השימושים השונים של enum:

  • דוגמא 1: שימוש ברירת מחדל בהגדרת enum
  • דוגמה 2: שימוש בהגדרת enum מותאם אישית
  • דוגמה 3: הגדרת enum באמצעות ביטוי קבוע
  • דוגמה 4: טווח היקף

דוגמה 1: שימוש בהגדרת ברירת המחדל של enum

בדוגמה זו, תלמד כיצד להגדיר את סוג הספירה עם ערכי קבוע ברירת מחדל. המהדר ידאג להקצות את ערכי ברירת המחדל ליסודות enum. להלן תראה את התוכנית לדוגמא ואת הפלט המתאים.

#לִכלוֹל

/ * הגדר את סוג enum */
enumשְׁגִיאָה{
IO_ERROR,
DISK_ERROR,
בעיה ברשת
};

intרָאשִׁי()
{
enumשגיאה Hw_Error; /* יצירת משתנה enum*/

printf ('הגדרת Hw_Error ל- IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- NETWORK_ERROR n');
Hw_Error=בעיה ברשת;
printf ('ערך Hw_Error = %d n',Hw_Error);

לַחֲזוֹר 0;
}

https://lh6.googleusercontent.com/0CHtUqkuIA-okDEPI0_5fZLU6lZ6Exz6DK4uUr63k5Ros863eqC-HmrvZ_LZBKbEvqeCVMCsnvXXhfrYJrBaxxfZBzZzZzZzZzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZz

דוגמה 2: שימוש בהגדרת enum מותאם אישית

בדוגמה זו תלמד כיצד להגדיר את סוג הספירה עם ערך קבוע מותאם אישית. כמו כן, דוגמה זו תעזור לך להבין כיצד ניתן לבצע אתחול קבועים מותאמים אישית בכל סדר אקראי. בדוגמה זו, הגדרנו במפורש את הערך הקבוע עבור 1רחובו -3מחקר ופיתוחרכיבי enum (כלומר, IO_ERROR ו- NETWORK_ERROR, בהתאמה), אך דילגנו על האתחול המפורש של 2ndו -4האלמנטים. כעת אחראית המהדר להקצות את ערכי ברירת המחדל ל -2ndו -4האלמנטים enum (כלומר, DISK_ERROR ו- PRINT_ERROR, בהתאמה). DISK_ERROR יוקצה לערך 3 ו- PRINT_ERROR יוקצה לערך 9. להלן תראה את התוכנית והפלט לדוגמה.

#לִכלוֹל

/* הגדר את סוג enum - אתחול מותאם אישית*/
enumשְׁגִיאָה{
IO_ERROR= 2,
DISK_ERROR,
בעיה ברשת= 8,
PRINT_ERROR
};

intרָאשִׁי()
{

/* הצהרת משתנה enum*/
enumשגיאה Hw_Error;

printf ('הגדרת Hw_Error ל- IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- NETWORK_ERROR n');
Hw_Error=בעיה ברשת;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

לַחֲזוֹר 0;
}

https://lh6.googleusercontent.com/hKtv00Hj7iPnnlNhC7mu1v7hzPhB64C9nyHwjB6oQgyCyEwOgiLSYWDOxvQCDrhumn4IzqhkN4qF9HcuKafKafKafKafKafKafKafKfKafKwKafKfKafKfKfKvKFKfKfKVFKfKfKfKVFKfKVFKVFKVKfKVKfKVFKfKVFKVFKVFKVFKwFKVKFKVFKVZFKVXV

דוגמה 3: הגדרת Enum באמצעות ביטוי קבוע

בדוגמה זו, תלמד כיצד להשתמש בביטוי הקבוע כדי להגדיר את הערך הקבוע של רכיבי enum.

#לִכלוֹל

/* הגדר את סוג enum - אתחול מותאם אישית באמצעות ביטוי קבוע
משתמשים כאן בביטוי קבוע במקרה של:
א. IO_ERROR ו-
ב. בעיה ברשת
זוהי דרך יוצאת דופן להגדיר את יסודות האנסום; אולם, זה
התוכנית מדגימה כי דרך זו לאתחול יסודות האלמנט היא אפשרית ב- c.
* /


enumשְׁגִיאָה{
IO_ERROR= 1 + 2 * 3 + 4,
DISK_ERROR,
בעיה ברשת= 2 == 2,
PRINT_ERROR
};

intרָאשִׁי()
{

/* הצהרת משתנה enum*/
enumשגיאה Hw_Error;

printf ('הגדרת Hw_Error ל- IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- NETWORK_ERROR n');
Hw_Error=בעיה ברשת;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

לַחֲזוֹר 0;
}

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

דוגמה 4: enum Scope

בדוגמה זו תלמד כיצד חוק ההיקף פועל עבור enum. ניתן היה להשתמש ב- MACRO (#define) כדי להגדיר קבוע במקום הסכום, אך כלל ההיקף אינו פועל עבור MACRO.

#לִכלוֹל

intרָאשִׁי()
{

/ * הגדר את סוג enum */
enumשגיאה_1{
IO_ERROR= 10,
DISK_ERROR,
בעיה ברשת= 3,
PRINT_ERROR
};


{

/* הגדר את סוג enum בהיקף הפנימי*/
enumשגיאה_1{
IO_ERROR= עשרים,
DISK_ERROR,
בעיה ברשת= 35,
PRINT_ERROR
};

/* הצהרת משתנה enum*/
enumשגיאה_1 Hw_Error;
printf ('הגדרת Hw_Error ל- IO_ERROR n');
Hw_Error=IO_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- DISK_ERROR n');
Hw_Error=DISK_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- NETWORK_ERROR n');
Hw_Error=בעיה ברשת;
printf ('ערך Hw_Error = %d n',Hw_Error);

printf (' nהגדרת Hw_Error ל- PRINT_ERROR n');
Hw_Error=PRINT_ERROR;
printf ('ערך Hw_Error = %d n',Hw_Error);
}
לַחֲזוֹר 0;
}

השוואה בין תעריף למאקרו

Enum מאקרו
כלל ההיקף חל על חוקי. כלל ההיקף אינו חל על מאקרו.
הקצאת ברירת המחדל של ערך Enum מתרחשת באופן אוטומטי.

Enum עוזר מאוד בהגדרת מספר רב של קבועים. המהדר לוקח אתחול ברירת המחדל של ערך קבוע.

על התכנת תמיד לציין את ערכי קבוע המאקרו במפורש.

זה יכול להיות תהליך מייגע עבור מספר רב של קבועים מכיוון שהמתכנת חייב תמיד להגדיר באופן ידני כל ערך קבוע תוך הגדרת המאקרו.

סיכום

תוכנית ה- enum ב- C יכולה להיחשב כשיטה אופציונלית לתוכניות עצמאיות או לפרויקטים בגודל קטן מכיוון שתכנתים תמיד יכולים להשתמש במאקרו במקום ב- enum. עם זאת, מתכנתים מנוסים נוטים להשתמש ב- enum מעל המאקרו לפרויקטים גדולים של פיתוח תוכנה. זה עוזר בכתיבת תוכניות נקיות וקריאות.