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

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

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

Βίντεο: Λόγος Τιμής - Νιώθω Έντονα 2024
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 ++ - ανδρείκελα

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

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

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

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

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

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

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

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

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Σε μεγάλες εταιρείες με εκατοντάδες ή χιλιάδες εργαζόμενοι, δύο ή τρία άτομα δαπανούν μεγάλο μέρος ή και ολόκληρο το χρόνο εργασίας τους με τα στοιχεία που έχουν εγγραφεί στον προϋπολογισμό. Για να επεξεργαστείτε έναν υπάρχοντα προϋπολογισμό στο QuickBooks, ακολουθήστε τα παρακάτω βήματα:

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Από, Προς, Στήλες και Ταξινόμηση. Αυτά τα πλαίσια σας επιτρέπουν επίσης να ελέγχετε τις πληροφορίες που εμφανίζονται στο παράθυρο αναφοράς και την εμφάνιση των πληροφοριών. Για παράδειγμα, μπορείτε να ενημερώσετε το QuickBooks για το χρονικό διάστημα που θέλετε ...