Μια δομή που χρησιμοποιείται συχνά στη C είναι τα enums (αναφορικά με τον τύπο του enum). Ένα enum αντιπροσωπεύει ένα σύνολο από σταθερές τιμές.
Για να δημιουργήσετε ένα enum, χρησιμοποιήστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum και διαχωρίστε τα αντικείμενα του enum με κόμμα:
enum colors { red, green, blue };
Στο παραπάνω παράδειγμα, δημιουργούμε ένα enum με το όνομα “colors”, και περιέχει τα αντικείμενα “red”, “green” και “blue”.
Προσέξτε ότι δεν αναθέτουμε τιμές στα αντικείμενα του enum. Η τιμή του κάθε αντικειμένου υποδηλώνει τη θέση του στο σύνολο, με το πρώτο αντικείμενο να έχει τιμή 0, το δεύτερο 1 κλπ.
Για να έχουμε πρόσβαση στο enum, πρέπει να δημιουργήσουμε μια μεταβλητή του.
Μέσα στη main(), ορίστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum (Level) και μετά το όνομα της μεταβλητής του enum (στο παρακάτω παράδειγμα είναι myVar):
enum Level { Low, Medium, High }; int main() { enum Level myVar = Medium; printf("%d", myVar); return 0; }
Στο παραπάνω παράδειγμα, δημιουργούμε ένα enum με το όνομα “Level”, και περιέχει τα αντικείμενα “Low”, “Medium” και “High”. Στη συνέχεια, δημιουργούμε μια μεταβλητή myVar του enum με την τιμή Medium, και στη συνέχεια την εκτυπώνουμε.
[adinserter block=”2″]
Αν τρέξετε τον κώδικα, θα εμφανιστεί η τιμή της μεταβλητής myVar, η οποία είναι ίση με 1 (αντιστοιχεί στο αντικείμενο Medium του enum).
Τώρα που έχετε δημιουργήσει μια μεταβλητή enum (myVar), μπορείτε να της αναθέσετε μια τιμή.
Η τιμή που ανατίθεται πρέπει να είναι ένα από τα αντικείμενα μέσα στο enum (LOW, MEDIUM ή HIGH):
enum Level { LOW, MEDIUM, HIGH }; int main() { enum Level myVar; myVar = MEDIUM; printf("%d", myVar); return 0; }
Στο παραπάνω παράδειγμα, δημιουργούμε ένα enum με το όνομα “Level”, και περιέχει τα αντικείμενα “LOW”, “MEDIUM” και “HIGH”. Στη συνέχεια, δημιουργούμε μια μεταβλητή myVar του enum και της αναθέτουμε την τιμή MEDIUM, και στη συνέχεια την εκτυπώνουμε.
Αν τρέξετε τον κώδικα, θα εμφανιστεί η τιμή της μεταβλητής myVar, η οποία είναι ίση με 1 (αντιστοιχεί στο αντικείμενο MEDIUM του enum).
Όπως ξέρετε, το πρώτο αντικείμενο ενός enum έχει την τιμή 0. Το δεύτερο έχει την τιμή 1, και ούτω καθεξής.
Για να καθιστούν περισσότερο νόημα στις τιμές, μπορείτε εύκολα να τις αλλάξετε:
enum Level { LOW = 10, MEDIUM = 50, HIGH = 100 };
Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, το δεύτερο έχει την τιμή 50, και το τρίτο έχει την τιμή 100. Στη συνέχεια, μπορείτε να δώσετε σε μια μεταβλητή του enum μία από αυτές τις τιμές:
enum Level myVar; myVar = MEDIUM;
Στο παραπάνω παράδειγμα, η τιμή της μεταβλητής myVar είναι MEDIUM, η οποία έχει την τιμή 50 καθώς είναι το δεύτερο αντικείμενο του enum.
Σημειώστε ότι εάν αναθέσετε μια τιμή σε ένα συγκεκριμένο αντικείμενο, τα επόμενα αντικείμενα θα ενημερώσουν αυτόματα τους αριθμούς τους:
enum Level { LOW = 10, MEDIUM, // Will have the value 11 HIGH // Will have the value 12 };
Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, και οι επόμενα θα έχουν τις τιμές 11 και 12 αντίστοιχα, καθώς δεν ανατίθεται εξαρχής κάποια τιμή σε αυτά.
Τα enums χρησιμοποιούνται συχνά σε switch statements για να ελέγξουν τις αντίστοιχες τιμές:
#include <stdio.h> enum Weekday { MON, TUE, WED, THU, FRI, SAT, SUN }; int main() { enum Weekday today = FRI; switch (today) { case MON: printf("Today is Monday\n"); break; case TUE: printf("Today is Tuesday\n"); break; case WED: printf("Today is Wednesday\n"); break; case THU: printf("Today is Thursday\n"); break; case FRI: printf("Today is Friday\n"); break; case SAT: printf("Today is Saturday\n"); break; case SUN: printf("Today is Sunday\n"); break; default: printf("Invalid weekday\n"); break; } return 0; }
Στο παραπάνω παράδειγμα, χρησιμοποιούμε την εντολή switch για να ελέγξουμε την τιμή του today
και εκτυπώνουμε την αντίστοιχη ημέρα της εβδομάδας. Η default περίπτωση θα εκτελεστεί εάν η τιμή του today
δεν αντιστοιχεί σε καμία από τις επιλογές μας.