Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Ο τύπος enum (enumeration) στη γλώσσα C είναι ένας τρόπος να ορίσουμε μια νέα τύπο δεδομένων που περιορίζεται σε ένα συγκεκριμένο σύνολο σταθερών τιμών. Με τη χρήση του enum, μπορούμε να δημιουργήσουμε μια λίστα από διακριτές τιμές που μπορούν να χρησιμοποιηθούν ως συμβολικές σταθερές στο πρόγραμμά μας.

Για παράδειγμα, μπορούμε να ορίσουμε έναν τύπο enum με το όνομα “Color” που θα περιέχει τις τιμές “RED”, “GREEN” και “BLUE”. Στη συνέχεια, μπορούμε να δημιουργήσουμε μεταβλητές τύπου Color και να τους αναθέσουμε μία από τις τιμές του enum.

Η χρήση του enum μας επιτρέπει να γράψουμε πιο αναγνώσιμο και κατανοητό κώδικα, καθώς οι τιμές που μπορούμε να χρησιμοποιήσουμε είναι προκαθορισμένες και περιορισμένες. Αυτό μας βοηθάει να αποφύγουμε λάθη και προβλήματα που προκύπτουν από την αναθεώρηση και την αντιστοίχιση αριθμητικών τιμών σε συμβολικές σταθερές.

Για να δημιουργήσετε ένα enum, χρησιμοποιήστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum και διαχωρίστε τα αντικείμενα του enum με κόμμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
enum colors {
red,
green,
blue
};
enum colors { red, green, blue };
enum colors {
    red,
    green,
    blue
};

Στο παραπάνω παράδειγμα, δημιουργούμε ένα enum με το όνομα “colors”, και περιέχει τα αντικείμενα “red”, “green” και “blue”.

Προσέξτε ότι δεν αναθέτουμε τιμές στα αντικείμενα του enum. Η τιμή του κάθε αντικειμένου υποδηλώνει τη θέση του στο σύνολο, με το πρώτο αντικείμενο να έχει τιμή 0, το δεύτερο 1 κλπ.

Για να έχουμε πρόσβαση στο enum, πρέπει να δημιουργήσουμε μια μεταβλητή του.

Μέσα στη main(), ορίστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum (Level) και μετά το όνομα της μεταβλητής του enum (στο παρακάτω παράδειγμα είναι myVar):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
enum Level {
Low, // Χαμηλό επίπεδο
Medium, // Μεσαίο επίπεδο
High // Υψηλό επίπεδο
};
int main() {
enum Level myVar = Medium; // Δήλωση και αρχικοποίηση μεταβλητής myVar με την τιμή Medium
printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar
return 0;
}
#include <stdio.h> enum Level { Low, // Χαμηλό επίπεδο Medium, // Μεσαίο επίπεδο High // Υψηλό επίπεδο }; int main() { enum Level myVar = Medium; // Δήλωση και αρχικοποίηση μεταβλητής myVar με την τιμή Medium printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar return 0; }
#include <stdio.h>

enum Level {
    Low,     // Χαμηλό επίπεδο
    Medium,  // Μεσαίο επίπεδο
    High     // Υψηλό επίπεδο
};

int main() {
    enum Level myVar = Medium;  // Δήλωση και αρχικοποίηση μεταβλητής myVar με την τιμή Medium
    printf("%d", myVar);       // Εκτύπωση της τιμής της μεταβλητής myVar
    return 0;
}

[adinserter block=”2″]

Ο παραπάνω κώδικας συνοψίζει τη χρήση της enum (απαρίθμηση) στη γλώσσα C.

Συγκεκριμένα, ο κώδικας ορίζει μια enum με την ονομασία Level, η οποία περιέχει τρία πιθανά επίπεδα: Low (χαμηλό), Medium (μεσαίο) και High (υψηλό). Η enum δηλώνεται μεταξύ των αγκύλων {} και κάθε στοιχείο της απαρίθμησης αναφέρεται με την αντίστοιχη τιμή.

Στη συνέχεια, ο κώδικας ορίζει τη συνάρτηση main(), η οποία είναι η κύρια συνάρτηση του προγράμματος. Μέσα στη συνάρτηση main(), δηλώνεται μια μεταβλητή με την ονομασία myVar, η οποία είναι τύπου enum Level. Αρχικοποιείται με την τιμή Medium, που είναι το δεύτερο στοιχείο της απαρίθμησης.

Τέλος, η συνάρτηση printf() χρησιμοποιείται για να εκτυπώσει την τιμή της μεταβλητής myVar. Χρησιμοποιείται η μορφοποίηση %d για να εκτυπωθεί ένας ακέραιος αριθμός.

Ο κώδικας θα εκτυπώσει τον αριθμητικό αντίστοιχο της τιμής Medium, που είναι 1 (η αρίθμηση των στοιχείων της enum ξεκινά από το 0).

Έτσι, το αποτέλεσμα της εκτέλεσης του κώδικα θα είναι η εκτύπωση του αριθμού 1.

Τώρα που έχετε δημιουργήσει μια μεταβλητή enum (myVar), μπορείτε να της αναθέσετε μια τιμή.

Η τιμή που ανατίθεται πρέπει να είναι ένα από τα αντικείμενα μέσα στο enum (LOW, MEDIUM ή HIGH):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
enum Level {
LOW, // Χαμηλό επίπεδο
MEDIUM, // Μεσαίο επίπεδο
HIGH // Υψηλό επίπεδο
};
int main() {
enum Level myVar; // Δημιουργία μεταβλητής τύπου enum Level με όνομα myVar
myVar = MEDIUM; // Ανάθεση της τιμής MEDIUM στη μεταβλητή myVar
printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar
return 0;
}
#include <stdio.h> enum Level { LOW, // Χαμηλό επίπεδο MEDIUM, // Μεσαίο επίπεδο HIGH // Υψηλό επίπεδο }; int main() { enum Level myVar; // Δημιουργία μεταβλητής τύπου enum Level με όνομα myVar myVar = MEDIUM; // Ανάθεση της τιμής MEDIUM στη μεταβλητή myVar printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar return 0; }
#include <stdio.h>

enum Level {
    LOW,      // Χαμηλό επίπεδο
    MEDIUM,   // Μεσαίο επίπεδο
    HIGH      // Υψηλό επίπεδο
};

int main() {
    enum Level myVar;    // Δημιουργία μεταβλητής τύπου enum Level με όνομα myVar
    myVar = MEDIUM;      // Ανάθεση της τιμής MEDIUM στη μεταβλητή myVar
    printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar
    return 0;
}

Ο παραπάνω κώδικας ορίζει έναν απαρίθμητο τύπο (enum) με όνομα “Level”, που περιέχει τις τιμές “LOW”, “MEDIUM” και “HIGH”. Στη συνέχεια, η συνάρτηση main() δηλώνει μια μεταβλητή myVar τύπου enum Level και την αναθέτει με την τιμή “MEDIUM”. Τέλος, εκτυπώνεται η τιμή της μεταβλητής myVar, που αντιπροσωπεύει το μεσαίο επίπεδο.

Συνολικά, ο κώδικας εκτυπώνει την τιμή της μεταβλητής myVar, που αντιστοιχεί στο μεσαίο επίπεδο (MEDIUM), με τη χρήση της συνάρτησης printf().

Όπως ξέρετε, το πρώτο αντικείμενο ενός enum έχει την τιμή 0. Το δεύτερο έχει την τιμή 1, και ούτω καθεξής.

Για να καθιστούν περισσότερο νόημα στις τιμές, μπορείτε εύκολα να τις αλλάξετε:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
enum Level {
LOW = 10,
MEDIUM = 50,
HIGH = 100
};
enum Level { LOW = 10, MEDIUM = 50, HIGH = 100 };
enum Level {
    LOW = 10,
    MEDIUM = 50,
    HIGH = 100
};

Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, το δεύτερο έχει την τιμή 50, και το τρίτο έχει την τιμή 100. Στη συνέχεια, μπορείτε να δώσετε σε μια μεταβλητή του enum μία από αυτές τις τιμές:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
enum Level myVar;
myVar = MEDIUM;
enum Level myVar; myVar = MEDIUM;
enum Level myVar;
myVar = MEDIUM;

Στο παραπάνω παράδειγμα, η τιμή της μεταβλητής myVar είναι MEDIUM, η οποία έχει την τιμή 50 καθώς είναι το δεύτερο αντικείμενο του enum.

Σημειώστε ότι εάν αναθέσετε μια τιμή σε ένα συγκεκριμένο αντικείμενο, τα επόμενα αντικείμενα θα ενημερώσουν αυτόματα τους αριθμούς τους:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
enum Level {
LOW = 10,
MEDIUM, // Will have the value 11
HIGH // Will have the value 12
};
enum Level { LOW = 10, MEDIUM, // Will have the value 11 HIGH // Will have the value 12 };
enum Level {
    LOW = 10,
    MEDIUM,    // Will have the value 11
    HIGH       // Will have the value 12
};

Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, και οι επόμενα θα έχουν τις τιμές 11 και 12 αντίστοιχα, καθώς δεν ανατίθεται εξαρχής κάποια τιμή σε αυτά.

Τα enums χρησιμοποιούνται συχνά σε switch statements για να ελέγξουν τις αντίστοιχες τιμές:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
enum Weekday {
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
int main() {
enum Weekday today = FRI; // Δήλωση και αρχικοποίηση της μεταβλητής today ως FRI
switch (today) {
case MON:
printf("Today is Monday\n"); // Εκτύπωση ανάλογα με την τιμή της today
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"); // Εκτύπωση μηνύματος για μη έγκυρη τιμή της today
break;
}
return 0;
}
#include <stdio.h> enum Weekday { MON, TUE, WED, THU, FRI, SAT, SUN }; int main() { enum Weekday today = FRI; // Δήλωση και αρχικοποίηση της μεταβλητής today ως FRI switch (today) { case MON: printf("Today is Monday\n"); // Εκτύπωση ανάλογα με την τιμή της today 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"); // Εκτύπωση μηνύματος για μη έγκυρη τιμή της today break; } return 0; }
#include <stdio.h>

enum Weekday {
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
};

int main() {
    enum Weekday today = FRI; // Δήλωση και αρχικοποίηση της μεταβλητής today ως FRI

    switch (today) {
        case MON:
            printf("Today is Monday\n"); // Εκτύπωση ανάλογα με την τιμή της today
            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"); // Εκτύπωση μηνύματος για μη έγκυρη τιμή της today
            break;
    }

    return 0;
}

Ο παραπάνω κώδικας εκτελεί την εκτύπωση της ημέρας της εβδομάδας ανάλογα με την τιμή της μεταβλητής today.

Αρχικά, δηλώνεται και αρχικοποιείται η μεταβλητή today με την τιμή FRI, που αντιστοιχεί στην Παρασκευή.

Στη συνέχεια, χρησιμοποιείται η δομή switch για να ελεγχθεί η τιμή της μεταβλητής today. Ανάλογα με την τιμή, εκτελείται η αντίστοιχη περίπτωση case και εκτυπώνεται το αντίστοιχο μήνυμα.

Συγκεκριμένα, στην περίπτωση που η τιμή της today είναι FRI, εκτυπώνεται το μήνυμα “Today is Friday”. Αν η τιμή είναι άλλη από τις προκαθορισμένες τιμές του enum Weekday, εκτυπώνεται το μήνυμα “Invalid weekday”.

Ο κώδικας ολοκληρώνεται με την επιστροφή της τιμής 0 από τη συνάρτηση main().

21 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων