Περίληψη
Ένας τύπος δεν ορίζει μόνο πόσα byte πιάνει ένα δεδομένο, αλλά και πώς διαβάζονται τα bit του: το ίδιο byte είναι το γράμμα «A» για ένα char και ο αριθμός 65 για ένα int. Αυτό το μάθημα συμπληρώνει τους βασικούς τύπους με τους χαρακτήρες και τις λογικές τιμές, και μελετά το πέρασμα από έναν τύπο σε άλλον: τις έμμεσες μετατροπές, που ο μεταγλωττιστής κάνει χωρίς να του ζητηθούν και που μπορεί να χάνουν πληροφορία· τη ρητή μετατροπή με static_cast· και την αρχικοποίηση με άγκιστρα, που απορρίπτει τις απώλειες. Κλείνει με τις σταθερές, const και constexpr, που μετατρέπουν μια πρόθεση («αυτή η τιμή δεν αλλάζει») σε εγγύηση την οποία ελέγχει ο μεταγλωττιστής, και με τα literal και το auto, που καθορίζουν τον τύπο μιας τιμής γραμμένης στον πηγαίο κώδικα.
Μαθησιακοί στόχοι
- Να χρησιμοποιείτε τον αριθμητικό κωδικό ενός χαρακτήρα για να υπολογίζετε με αυτόν, για παράδειγμα για να βρίσκετε την τιμή ενός ψηφίου που διαβάστηκε ως χαρακτήρας.
- Να προβλέπετε το αποτέλεσμα μιας έμμεσης μετατροπής ανάμεσα σε ακέραιους, πραγματικούς και λογικές τιμές, και να γράφετε τη ρητή μετατροπή με
static_cast. - Να εξηγείτε γιατί η αρχικοποίηση με άγκιστρα απορρίπτει τις μετατροπές που χάνουν πληροφορία, και τι κάνει ο GCC σε κάθε περίπτωση.
- Να δηλώνετε με
constήconstexprκάθε τιμή που δεν πρέπει να αλλάξει, και να διακρίνετε τη μία λέξη από την άλλη. - Να συνάγετε τον τύπο ενός literal (
5,5u,5.0,5.0f,'5',"5") και αυτόν που του αποδίδει τοauto.
Ο τύπος ως ερμηνεία
Το μάθημα Μεταβλητές και μνήμη παρουσίασε τη μεταβλητή ως ένα κελί μνήμης με όνομα, τύπο και τιμή, και τα μαθήματα Οι ακέραιοι και η αναπαράστασή τους και Οι αριθμοί κινητής υποδιαστολής έδειξαν ότι μέσα στο κελί δεν υπάρχουν αριθμοί αλλά bit, και ότι ο τύπος λέει πώς διαβάζονται. Αυτό το μάθημα οδηγεί την ιδέα στη συνέπειά της: αν ο τύπος είναι ο κανόνας ανάγνωσης, τότε τα ίδια bit σημαίνουν διαφορετικά πράγματα ανάλογα με τον τύπο με τον οποίο διαβάζονται, και το πέρασμα μιας τιμής από έναν τύπο σε άλλον, που στη C++ λέγεται μετατροπή, είναι αλλαγή κανόνα. Ορισμένες μετατροπές διατηρούν την τιμή (ο ακέραιος 7 μετατρέπεται στον πραγματικό 7.0 χωρίς να χαθεί τίποτα)· άλλες την αλλοιώνουν (ο πραγματικός 2.7 μετατρέπεται στον ακέραιο 2). Από αυτό προκύπτει το ερώτημα που διατρέχει το μάθημα: σε κάθε μετατροπή, διατηρείται η τιμή, και ποιος το ελέγχει;
Φόρτωση του περιεχομένου…
Ολοκληρώθηκε
Συνδεθείτε για να αποθηκεύσετε την πρόοδό σας