Απαριθμητές μεταβλητές

Οι απαριθμητές μεταβλητές χρησιμοποιούνται καθαρά γιά λόγους αναγνωσιμότητας 
ενός προγράμματος, περίπου όπως και οι σταθερές. Μιά απαριθμητή μεταβλητή 
μπορεί κάλλιστα να παρασταθεί από μιά ακέραια μεταβλητή χωρίς κανένα πρόβλημα 
εκτός από το γεγονός οτι το πρόγραμμα θα χρειαστεί λίγο περισσότερο σχολιασμό. 

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

Γιά παράδειγμα, στο πρόγραμμα που ακολουθεί η απαριθμητή μεταβλητή result 
μπορεί να πάρει μόνο μιά από τις τιμές - ονόματα {win,tie,bye,lose,no_show}. 
Αντίστοιχα η απαριθμητή μεταβλητή days μπορεί να πάρει μία από τις τιμές - 
ονόματα {sun,mon,tues,wed,thur,fri,sat}. 

Οι τιμές - ονόματα μπορούν είναι στην ουσία ένα υποσύνολο των μη-προσημασμένων 
ακεραίων και έτσι τους αντιμετωπίζει ο μεταφραστής. Δηλαδή μόλις ο μεταφραστής 
συνατήσει μιά δήλωση απαριθμητής μεταβλητής τότε αντιστοιχεί σε κάθε μιά από τις 
διατεταγμένες τιμές - όνομα μία διαδοχική μη-αρνητική ακέραια τιμή, 
ακολουθώντας αύξουσα σειρά.  

Το γεγονός αυτό γίνεται κατανοητό και από το αποτέλεσμα του προγράμματος.

    win = 0
    lose = 3
    tie = 1
    bye = 2
    no show = 4

The day code is 1
The day code is 2
The day code is 3
The day code is 4

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

Περιεχόμενα Κεφαλαίου