Σπίτι Προσωπικά Οικονομικά Έντονα πληκτρολογημένες απαριθμήσεις σε C ++ - ανδρείκελα

Έντονα πληκτρολογημένες απαριθμήσεις σε C ++ - ανδρείκελα

Βίντεο: Λόγος Τιμής - Νιώθω Έντονα 2025

Βίντεο: Λόγος Τιμής - Νιώθω Έντονα 2025
Anonim

Ο προγραμματισμός αφορά μόνο την ευκρίνεια. Είναι δύσκολο (στην πραγματικότητα είναι αδύνατο) να γράφετε και να διατηρείτε ένα πρόγραμμα που δεν μπορείτε να διαβάσετε. Μέρος της ανάγνωσης μιας καταχώρησης κώδικα πηγής κατανοεί τι αντιπροσωπεύουν οι αριθμοί που χρησιμοποιούνται στο πρόγραμμα. Η πιο βασική βοήθεια που παρέχει η C ++ είναι η πανταχού παρούσα #define, όπως στο παρακάτω παράδειγμα:

#define PI 3. 141592653589793

Αυτή η λύση είναι εντάξει για μεμονωμένες τιμές, αν και πάσχει από το γεγονός ότι Ο μηχανισμός #define δεν είναι (αυστηρά) ένα μέρος του C / C ++, αφού ο προεπεξεργαστής τρέχει πριν από τον μεταγλωττιστή. Σε απάντηση, η C ++ 2011 εισήγαγε μια σταθερή έκφραση construct:

constexpr μακρύ διπλό PI = 3. 141592653589793;

Η λέξη-κλειδί constexpr φέρει σταθερές στη σκηνή C ++. Αυτό το PI έχει έναν πραγματικό τύπο, όπως και άλλες μεταβλητές C ++. Το C ++ μπορεί να δημιουργήσει μηνύματα σφάλματος με PI που έχουν πολύ μεγαλύτερη αίσθηση από αυτά που αφορούν το 3. 14159.

Οι σταθερές εκφράσεις είναι ωραία για μεμονωμένες σταθερές τιμές, αλλά συχνά οι σταθερές αντιπροσωπεύουν σύνολα πραγμάτων αντί για φυσικές σταθερές, όπως στο παρακάτω παράδειγμα:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ΑΡΚΑΝΣΑΣ 3 // … και ούτω καθεξής …

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

Η C ++ έχει από καιρό έναν βελτιωμένο μηχανισμό για τον καθορισμό αυτών των τύπων σταθερών - η απαρίθμηση:

enum STATE {DC_OR_TERRITORY, // παίρνει 0 ALABAMA, // παίρνει 1 ALASKA, // παίρνει 2 ARKANSAS, // … και σύντομα…};

Η λέξη-κλειδί enum εισάγει μια ακολουθία σταθερών που ονομάζεται "απαρίθμηση". Στην περίπτωση αυτή, η απαρίθμηση φέρει το όνομα STATE. Κάθε στοιχείο αυτής της απαρίθμησης έχει εκχωρηθεί μια τιμή ξεκινώντας από 0 και αυξάνοντας διαδοχικά κατά 1, έτσι DC_OR_TERRITORY ορίζεται ως 0, ALABAMA ορίζεται ως 1, και ούτω καθεξής. Μπορείτε να παρακάμψετε αυτήν την αυξητική αλληλουχία χρησιμοποιώντας μια εντολή assign ως εξής:

enum STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … και ούτω καθεξής …};

Αυτή η έκδοση του STATE ορίζει ένα στοιχείο DC, το οποίο δίνεται στην τιμή 0. Στη συνέχεια ορίζει ένα νέο στοιχείο TERRITORY, το οποίο έχει επίσης την τιμή 0. Η ALABAMA συλλαμβάνει με 1, όπως και πριν.

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

double taxRate (STATE s) {return taxRatesByState [s];}

Το μόνο πρόβλημα με αυτήν την προσέγγιση είναι ότι αυτή η απαρίθμηση δεν δημιουργεί νέο τύπο (όπως ίσως νομίζετε).Στην πραγματικότητα, σύμφωνα με το πρότυπο, το STATE είναι απλά ένα άλλο όνομα για int - και οι σταθερές ALABAMA, ALASKA, και ούτω καθεξής είναι όλοι τύπου const int.

Ο μεταγλωττιστής gcc στην πραγματικότητα παρέχει ένα enum που δηλώνει με αυτόν τον τρόπο λίγο περισσότερη εξουσία απ ​​'ότι απλά ονομάζει μια άλλη μορφή int. Μπορείτε πραγματικά να υπερφορτώσετε τις λειτουργίες βάσει ενός τύπου enum:

void fn (STATE s); άκυρη fn (int n)? fn (ALASKA). // invokes fn (STATE)

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

enum class STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … και ούτω καθεξής …};

Μια τάξη απαρίθμησης είναι τώρα πλήρης τύπου όπως κάθε άλλη κλάση που ορίζει ο χρήστης. Τα παρακάτω δεν είναι ακόμη νόμιμα για δύο λόγους:

int s = ALASKA;

Κατ 'αρχάς, η σταθερή ALASKA ορίζεται μόνο μέσα στο χώρο ονομάτων STATE. Έτσι, το όνομα της σταθεράς είναι ΚΡΑΤΙΚΟ: ΑΛΑΣΚΑ. Δεύτερον, ο τύπος δεν είναι int αλλά STATUS. Δεν μπορείτε να αντιστοιχίσετε μια τιμή τύπου STATE σε ένα int.

ΚΡΑΤΟΣ s = ΚΡΑΤΟΣ:: ALASKA;

Ο προγραμματιστής μπορεί να αναδιατυπώσει ένα STATE σε ένα int, αλλά πρέπει να το κάνει ρητά -αυτές οι μετατροπές δεν το κόβουν με τάξεις απαρίθμησης:

int n = (int) STATE:: ALASKA;

Αυτός ο νέος τύπος enum μπορεί επίσης να βασιστεί σε έναν από τους άλλους τύπους αριθμών μέτρησης εκτός από το int:

enum class STATE: char {DC, // … το υπόλοιπο της δήλωσης είναι ίδιο
Έντονα πληκτρολογημένες απαριθμήσεις σε C ++ - ανδρείκελα

Η επιλογή των συντακτών

Ερωτήσεις για να ρωτήσετε έναν νέο ψυχίατρο - ανδρείκελα

Ερωτήσεις για να ρωτήσετε έναν νέο ψυχίατρο - ανδρείκελα

Όταν ψάχνετε έναν ψυχίατρο για έναν αγαπημένο με σχιζοφρένεια, . Ο ψυχίατρος είναι το κλειδί στη διαχείριση της σχιζοφρένειας του αγαπημένου σας προσώπου, οπότε θα πρέπει να μάθετε μερικές βασικές πληροφορίες πριν την αρχική συνάντηση με τον γιατρό. Ρωτήστε τον ψυχίατρο στις ακόλουθες ερωτήσεις: Πόσο χρεώνεστε ανά επίσκεψη; Κάνετε ...

Γρήγοροι τρόποι διαχείρησης των ανήσυχων σκέψεων σας με προσοχή - ανδρείκελα

Γρήγοροι τρόποι διαχείρησης των ανήσυχων σκέψεων σας με προσοχή - ανδρείκελα

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

Η επιλογή των συντακτών

Επεξεργασίας και μορφοποίησης Clip Art και Εικόνες στο Excel 2007 - ανδρείκελα

Επεξεργασίας και μορφοποίησης Clip Art και Εικόνες στο Excel 2007 - ανδρείκελα

Εισάγεται εικόνα, το Excel 2007 προσθέτει την καρτέλα Picture Tools Format στην Κορδέλα. Χρησιμοποιήστε τις εντολές στην καρτέλα "Εργαλεία εικόνας", εάν θέλετε να επεξεργαστείτε ή να διαμορφώσετε εικόνες clip art ή εικόνες στα φύλλα εργασίας σας. Η καρτέλα "Εργαλειοθήκη εικόνας" χωρίζεται σε τέσσερις ομάδες: Προσαρμογή, ...

Βελτιώνοντας ένα διάγραμμα 3-D στο Excel 2007 - ανδρείκελα

Βελτιώνοντας ένα διάγραμμα 3-D στο Excel 2007 - ανδρείκελα

Excel 2007 περιλαμβάνει διάφορες επιλογές βελτίωσης 3 -D διαγράμματα, όπως αλλαγή της περιστροφής και της προοπτικής και χρήση των επιλογών 3-D που διαμορφώνουν το διάγραμμα γραφήματος. Αυτές και άλλες σχετικές επιλογές μπορούν να βρεθούν στις καρτέλες 3-D Περιστροφή και 3-D στο παράθυρο διαλόγου Format Chart Area. Ακολουθήστε αυτά τα βήματα για να βελτιώσετε το 3-D ...

Βελτιώστε τον πίνακα εργαλείων του Excel με το εργαλείο κάμερας

Βελτιώστε τον πίνακα εργαλείων του Excel με το εργαλείο κάμερας

Το εργαλείο της φωτογραφικής μηχανής του Excel είναι ένα πολύτιμο εργαλείο κατά την κατασκευή των dashboards και εκθέσεις. Σας δίνει τη δυνατότητα να τραβήξετε μια ζωντανή εικόνα μιας σειράς κυψελών που ενημερώνονται δυναμικά, ενώ τα δεδομένα σε αυτό το εύρος ενημερώνονται. Εδώ είναι μερικοί τρόποι για να προχωρήσετε πέρα ​​από τα βασικά και να χρησιμοποιήσετε το εργαλείο κάμερας για να βελτιώσετε τα dashboards σας και ...

Η επιλογή των συντακτών

Αλλάζοντας Ρυθμίσεις μέσω της οθόνης γρήγορου ελέγχου Rebel T6i / 750D - ανδρείκελα

Αλλάζοντας Ρυθμίσεις μέσω της οθόνης γρήγορου ελέγχου Rebel T6i / 750D - ανδρείκελα

Στο Rebel T6i / 750D σας επιτρέπει να αλλάξετε ορισμένες ρυθμίσεις χωρίς να χρησιμοποιήσετε τα κουμπιά λειτουργιών (το κουμπί ISO, το κουμπί αντιστάθμισης έκθεσης κλπ.) ή μενού. Μπορείτε να χρησιμοποιήσετε αυτήν την οθόνη για να προσαρμόσετε τις ρυθμίσεις σε οποιαδήποτε λειτουργία έκθεσης, αλλά οι ρυθμίσεις που είναι προσβάσιμες εξαρτώνται από τη λειτουργία που επιλέγετε και, ...

Αλλαγή της ρύθμισης ισορροπίας λευκού σε φωτογραφική μηχανή Canon EOS Rebel T3 - ανδρείκελα

Αλλαγή της ρύθμισης ισορροπίας λευκού σε φωτογραφική μηχανή Canon EOS Rebel T3 - ανδρείκελα

Σε σύγκριση με την κατανόηση κάποιων πτυχών της ψηφιακής φωτογραφίας, καθιστώντας νόημα τις επιλογές χρωμάτων Canon Rebel T3 ή T3i να είναι εύκολες. Κατ 'αρχάς, τα προβλήματα χρώματος δεν είναι όλα αυτά που είναι συνηθισμένα και όταν είναι, είναι συνήθως απλά να τα διορθώσετε με μια γρήγορη μετατόπιση του ελέγχου της λευκής ισορροπίας της κάμεράς σας. Μπορείτε να αποκτήσετε πρόσβαση στη ρύθμιση "Υπόλοιπο λευκού" μόνο ...