Πραγματικός τύπος δεδομένων C. Floating Point Τύποι (Float, Διπλό και μακρύ διπλό)

Ο τύπος δεδομένων στον προγραμματισμό είναι ένα σύνολο δύο συνόλων: μια πληθώρα τιμών και πολλές λειτουργίες που μπορούν να εφαρμοστούν σε αυτούς. Για παράδειγμα, στον τύπο των δεδομένων των ακέραιων μη αρνητικών αριθμών που αποτελείται από ένα πεπερασμένο σύνολο φυσικών αριθμών, μπορείτε να εφαρμόσετε τις λειτουργίες προσθήκης (+), πολλαπλασιασμός (*), τμήμα ακέραιο (/), βρίσκοντας το υπόλειμμα (%) και αφαίρεση (-).

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

  • λογικό (bool);
  • Σύμβολο (π.χ. Char).
  • ολόκληρο (π.χ. Int).
  • πλωτό σημείο (π.χ. πλωτήρα).
  • μεταφορές (που καθορίζονται από τον προγραμματιστή).
  • κενός.

Οι παρακάτω τύποι είναι χτισμένοι πάνω από το εισηγμένο:

  • δείκτη (π.χ. Int *).
  • συστοιχίες (π.χ. Char).
  • αναφορά (π.χ., δίκλινο &).
  • Άλλες δομές.

Ας στραφούμε στην έννοια του κυριολεκτικού (π.χ. 1, 2.4F, 25E-4, 'Α', κλπ.): Κληλιές - Καταγραφή στον πηγαίο κώδικα του προγράμματος που αντιπροσωπεύει μια σταθερή τιμή. Με άλλα λόγια, η κυριολεκτική είναι μόνο μια εμφάνιση ενός αντικειμένου (τιμή) οποιουδήποτε τύπου στον κώδικα προγράμματος. Στο C ++, είναι δυνατόν να γράψετε ακέραιες τιμές, τιμές πλωτή σημείων, συμβολική, boolean, συμβολοσειρά.

Το κυριολεκτικό ολόκληρο τύπο μπορεί να γραφτεί σε:

  • 10ο σύστημα αριθμών. Για παράδειγμα, 1205,
  • Σύστημα 8ου αριθμού σε μορφή 0 +. Για παράδειγμα, 0142;
  • Το σύστημα 16ου αριθμού σε μορφή 0x + + αριθμός. Για παράδειγμα, 0x2f.

24, 030, 0x18 - Αυτά είναι όλα τα αρχεία του ίδιου αριθμού στο Διαφορετικά συστήματα Σημείωση.
Για να γράψετε αριθμούς πλωτά σημείων Χρησιμοποιήστε την εγγραφή μέσω του σημείου: 0.1, .5, 4. - Είτε μέσα
Εκθετική εγγραφή - 25E-100. Δεν πρέπει να υπάρχουν κενά σε ένα τέτοιο ρεκόρ.

Το όνομα με το οποίο μπορούμε να συνδέσουμε τις τιμές που καταγράφονται από τις κυριολεκτικές κλήσεις ονομάζεται μεταβλητή. Η μεταβλητή είναι το όνομα της περιοχής μνήμης, το οποίο μπορεί να χρησιμοποιηθεί με άλλο τρόπο, η διεύθυνση του οποίου μπορεί να χρησιμοποιηθεί για την πρόσβαση στα δεδομένα. Αυτά τα δεδομένα καταγράφονται, ξαναγράψουν και διαγράφονται στη μνήμη με κάποιο τρόπο κατά τη διάρκεια της εκτέλεσης του προγράμματος. Η μεταβλητή σας επιτρέπει να έχετε πρόσβαση σε δεδομένα ανά πάσα στιγμή και, εάν είναι απαραίτητο, αλλάξτε τα. Τα δεδομένα που μπορούν να ληφθούν με μεταβλητή ονομασία ονομάζονται μεταβλητή τιμή.
Για να χρησιμοποιήσετε τη μεταβλητή στο πρόγραμμα, πρέπει να το δηλώσετε και, εάν είναι απαραίτητο, μπορείτε να ορίσετε (\u003d προετοιμασία). Η ανακοίνωση μιας μεταβλητής στο κείμενο του προγράμματος περιέχει αναγκαστικά 2 μέρη: τον τύπο βάσης και τον φορέα. Ο προσδιοριστής και ο αρχικοποιητής είναι προαιρετικά μέρη:

Const int παράδειγμα \u003d 3; // εδώ είναι const - sportier // int - βασικός τύπος // παράδειγμα - όνομα μεταβλητής // \u003d 3 - pictionizer.

Το όνομα μεταβλητής είναι μια ακολουθία συμβόλων από τα γράμματα του λατινικού αλφαβήτου (πεζά και κεφαλαία), αριθμοί και / ή σημάδι πρόσφυσης, αλλά ο πρώτος αριθμός χαρακτήρων δεν μπορεί να είναι. Θα πρέπει να επιλεγεί το όνομα της μεταβλητής ώστε να είναι πάντα εύκολο να μαντέψετε ότι αποθηκεύει, για παράδειγμα, "marthpayment". Στην περίληψη και στην πράξη, θα χρησιμοποιήσουμε τη σημείωση της καμήλα για τους κανόνες καταγραφής. Το όνομα της μεταβλητής δεν μπορεί να συμπέσει με τις λέξεις που προορίζονται στη γλώσσα, παραδείγματα τέτοιων λέξεων: αν, ενώ, λειτουργία, goosto, διακόπτης και άλλες λέξεις: εάν, ενώ, λειτουργία, goto, διακόπτης κλπ.

Ο αποτολμητής εκτός από το όνομα μεταβλητής μπορεί να περιέχει πρόσθετους χαρακτήρες:

  • * - δείκτης; πριν από το όνομα.
  • * Const - σταθερό δείκτη. πριν από το όνομα.
  • & - αναφορά; πριν από το όνομα.
  • - πίνακας; Μετά το όνομα.
  • () - λειτουργία; Μετά το όνομα.

Ο αρχικοποιητής σας επιτρέπει να προσδιορίσετε την τιμή για τη μεταβλητή αμέσως μετά την ανακοίνωση. Ο αρχικοποιητής αρχίζει με το κυριολεκτικό της ισότητας (\u003d) και στη συνέχεια εμφανίζεται η διαδικασία ρύθμισης της τιμής της μεταβλητής τιμής. Σε γενικές γραμμές, το σημάδι της ισότητας στο C ++ υποδηλώνει τη λειτουργία της ανάθεσης. Με αυτό, μπορείτε να ορίσετε και να αλλάξετε την τιμή της μεταβλητής. Για ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙ Μπορεί να είναι διαφορετικό.

Ο προσδιοριστής ορίζει πρόσθετα χαρακτηριστικά εκτός από τον τύπο. Ο προσδιοριστής Const που δίνεται στο παράδειγμα σάς επιτρέπει να απαγορεύετε την επακόλουθη τιμή αλλαγής της μεταβλητής. Τέτοιες αμετάβλητες μεταβλητές ονομάζονται σταθερές ή σταθερές.

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

Const int empty_const; // Σφάλμα, η σταθερή μεταβλητή CONST CONT \u003d 2 δεν αρχικοποιείται. // σταθερή με τιμή 2 παραδείγματος \u003d 3; // Σφάλμα που προσπαθεί να αντιστοιχίσετε μια σταθερή μεταβλητή τιμή

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

Κύριοι τύποι δεδομένων στο C ++

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

1. Ο τύπος ακέραιου τύπου (Char, Short (Int), Int, Long (Int), μακρύς)

Από τον τίτλο είναι εύκολο να κατανοήσουμε ότι πολλές τιμές αποτελούνται από ακέραιους αριθμούς. Επίσης, οι πολλές τιμές καθενός από τους καταχωρημένους τύπους μπορεί να είναι ένα σημάδι (υπογεγραμμένο) ή μη υπογεγραμμένο (μη υπογεγραμμένο). Ο αριθμός των στοιχείων που περιέχονται στο σετ εξαρτάται από το μέγεθος της μνήμης, το οποίο χρησιμοποιείται για την αποθήκευση της τιμής αυτού του τύπου. Για παράδειγμα, δίνεται 1 byte μνήμης για μια μεταβλητή τύπου char, έτσι ώστε όλα τα στοιχεία να είναι:

  • 2 8n \u003d 2 8 * 1 \u003d 256, όπου n είναι το μέγεθος μνήμης σε bytes για να αποθηκεύσετε την τιμή

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

  • - Για ένα μη υπογεγραμμένο char
  • [-128..127] - για το εικονικό char

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

Μη υπογεγραμμένες μεγάλες τιμές. // ορίζει έναν ολόκληρο (μεγάλο) άλυτο τύπο.

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

  • 1 \u003d μέγεθος char ≤ μέγεθος σύντομο ≤ μέγεθος int ≤ μέγεθος μακρύ.

Συνήθως τα μεγέθη των τύπων έχουν ως εξής: Char - 1, Short - 2, Int - 4, Long -8, Long - 8 bytes.

Με τις τιμές του συνόλου του τύπου, μπορούν να εκτελεστούν αριθμητικές λειτουργίες: +, -, *, /,%. Λειτουργίες σύγκρισης: \u003d\u003d,! \u003d,<=, <, >,\u003e \u003d; Λειτουργίες δυαδικών ψηφίων: & |, XOR,<<, >>.
Οι περισσότερες λειτουργίες, όπως η προσθήκη, πολλαπλασιασμός, αφαίρεση και δραστηριότητες σύγκρισης, δεν προκαλούν προβλήματα στην κατανόηση. Μερικές φορές, μετά την εκτέλεση αριθμητικών λειτουργιών, το αποτέλεσμα μπορεί να υπερβεί το φάσμα των τιμών. Σε αυτή την περίπτωση, το πρόγραμμα θα δώσει ένα σφάλμα.
Ένας ακέραιος διαίρεση (/) βρίσκει ένα ολόκληρο μέρος της διαίρεσης ενός ακέραιου, στην άλλη. Για παράδειγμα:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

Το ποσοστό σύμβολο (%) υποδεικνύει τον προσδιορισμό της λειτουργίας του υπολείμματος από τη διαίρεση δύο ακρίβεια:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

Πιο δύσκολο να κατανοήσετε τη λειτουργία - bit: & (s), | (Ή), XOR (εξαιρουμένων ή),<< (побитовый сдвиг влево), >\u003e (bitwise μετακίνηση προς τα δεξιά).

Οι λειτουργίες bit και, ή και xor σε κάθε κομμάτι πληροφοριών, εφαρμόζουν την κατάλληλη λογική λειτουργία:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 \u003d 01 2 xor 11 2 \u003d 10 2

Στην επεξεργασία εικόνας, χρησιμοποιούνται 3 κανάλια για το χρώμα: κόκκινο, μπλε και πράσινο - καθώς και διαφάνεια που αποθηκεύονται στη μεταβλητή τύπου INT, επειδή Κάθε κανάλι έχει μια σειρά τιμών από 0 έως 255. Σε ένα σύστημα αριθμών 16-IRICH, μια συγκεκριμένη τιμή γράφεται ως εξής: 0x180013FF; Στη συνέχεια, η τιμή των 18 16 αντιστοιχεί στο κόκκινο κανάλι, 00 16 - μπλε, 13 - πράσινο, FF - άλφα κανάλι (διαφάνεια). Να διαθέσει από έναν τέτοιο ακέραιο αριθμό Που ονομάζεται κανάλι Χρησιμοποιούνται λεγόμενα Μια μάσκα, όπου οι θέσεις ενδιαφέροντος είναι F 16 ή 1 2 στις θέσεις μας. Εκείνοι. Για να τονίσετε την αξία του μπλε καναλιού, πρέπει να χρησιμοποιήσετε τη μάσκα, δηλ. Μάχη και:

Int blue_channel \u003d 0x180013FF & 0x00ff0000;

Μετά από αυτό, η ληφθείσα τιμή μετατοπίζεται στα δεξιά στον απαιτούμενο αριθμό bits.

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

Char biginerexample \u003d 39; // 00100111 Αποτέλεσμα char \u003d beterexample<< 2; // сдвигаем 2 бита влево, результат: 10011100

Εάν μια μεταβλητή του μη υπογεγραμμένου τύπου, τότε το αποτέλεσμα θα είναι ο αριθμός 156, για το εικονικό είναι -100. Σημειώστε ότι για τους εικονικούς τύπους ακέραιων ακέραιων, η μονάδα στην ανώτερη εκκένωση της προβολής bit είναι ένα σημάδι του αριθμού του αριθμού. Ταυτόχρονα, η τιμή σε δυαδική μορφή αποτελείται από όλες τις μονάδες αντιστοιχεί στο -1. Εάν 1 μόνο στην παλαιότερη απόρριψη και στις άλλες απορρίψεις - μηδενικά, τότε ένας τέτοιος αριθμός έχει ελάχιστη τιμή για ένα συγκεκριμένο τύπο τιμής: για το char του -128.

2. Τύπος σημείου πλωτήρα (πλωτήρας, διπλό (πλωτήρας))

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

Float τιμή \u003d 0,2; Τιμή \u003d\u003d 0,2; // Σφάλμα, Αξία Δεν θα είναι 0,2 εδώ.

Εργασία με μεταβλητές κυμαινόμενου σημείου, ο προγραμματιστής δεν πρέπει να χρησιμοποιεί τη λειτουργία ελέγχου για ισότητα ή ανισότητα, αντί να χρησιμοποιεί συνήθως τους ελέγχους σε ένα συγκεκριμένο διάστημα:

Αξία - 0,2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

Εκτός από τις εργασίες σύγκρισης, ένας τύπος πλωτή σημείου υποστηρίζει 4 αριθμητικές λειτουργίες που συμμορφώνονται πλήρως με τις μαθηματικές λειτουργίες με πραγματικούς αριθμούς.

3. Boolean (λογικό) τύπου (bool)

Αποτελείται από μόνο δύο αξίες: TRUE (TRUE) και FALSE. Να συνεργαστεί με μεταβλητές Αυτός ο τύπος Χρησιμοποιήστε λογικές λειτουργίες:! (Όχι), \u003d\u003d (ισότητα),! \u003d (Ανισότητα), && (λογική και), || (λογική ή). Το αποτέλεσμα κάθε λειτουργίας μπορεί να βρεθεί στον κατάλληλο τραπέζι αλήθειας. π.χ:

X y xor.0 0 0 0 1 1 1 0 1 1 1 0

4. Τύπος συμβόλου (Char, Warch_T)

Ο τύπος char δεν είναι μόνο ένας ολόκληρος τύπος (συνήθως, ένας τέτοιος τύπος ονομάζεται byte), αλλά και ο χαρακτήρας που αποθηκεύει τον αριθμό χαρακτήρων από τον πίνακα με το σύμβολο ASCII. Για παράδειγμα, ο κωδικός 0x41 αντιστοιχεί στον χαρακτήρα «Α», και 0x71 - 't'.

Μερικές φορές υπάρχει ανάγκη να χρησιμοποιήσετε χαρακτήρες που δεν έχουν κατοχυρωθεί στους πίνακες ASCII και ως εκ τούτου απαιτεί να αποθηκεύονται περισσότερο από το 1ο byte. Για αυτούς υπάρχει ένα ευρύ σύμβολο (warch_t).

5.1. Συστοιχίες

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

Int myarray; // Συσκευή 5 στοιχείων ενός ολόκληρου τύπου

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

INT ODDS \u003d (1, 3, 7, 9, 11). // η συστοιχία αρχικοποιείται από τις 5ότερες τιμές

Για να αποκτήσετε πρόσβαση σε μια συγκεκριμένη τιμή σε ένα συστοιχικό στοιχείο (στοιχείο συστοιχίας), χρησιμοποιείται μια λειτουργία πρόσβασης () για να υποδείξει τον αριθμό στοιχείου (οι αριθμοί αρχίζουν με 0). Για παράδειγμα:

ΠΙΘΑΝΟΤΗΤΑ; // Πρόσβαση στο πρώτο στοιχείο του πίνακα. Θα επιστρέψει την τιμή των 1 αποδόσεων. // Πρόσβαση στο τρίτο στοιχείο. Επαληθεύει την τιμή των 7 αποδόσεων \u003d 13; // 5ο στοιχείο της συστοιχίας Αντιστοιχίστε μια νέα τιμή αποδόσεων. // Σφάλμα πρόσβασης

5.3. Χορδές

Για να καταγράψετε τη γραμμή, οι προγραμματιστές χρησιμοποιούν την ιδέα ότι η συμβολοσειρά είναι μια διαδοχική σειρά (πίνακας) χαρακτήρων. Για να προσδιορίσετε το τέλος της συμβολοσειράς, χρησιμοποιήστε μια ειδική γραμμή του τέλους της γραμμής: '\\ 0'. Τέτοιοι ειδικοί χαρακτήρες που αποτελούνται από μια αντίστροφη κοπή και το σύμβολο αναγνώρισης ονομάζονται σύμβολα ελέγχου ή διαφυγής. Υπάρχουν ακόμα, για παράδειγμα, το '\\ n' - η αρχή μιας νέας γραμμής, '\\ t' είναι μια πινακίδα. Για να καταγράψετε τη συμβολοσειρά αντίστροφης κοπής, χρησιμοποιείται η θωράκιση - πριν το ίδιο το σήμα βάλει μια άλλη κάθετο: '\\'. Η διαλογή χρησιμοποιείται επίσης για την καταγραφή των αποσπασμάτων.

Δημιουργήστε μια μεταβλητή συμβολοσειρά:

Char textexample \u003d ('t', 'e', \u200b\u200b's', 't', '\\ 0'); // Γραμμή "Δοκιμή" καταγράφεται

Υπάρχει ένα απλοποιημένο αρχείο αρχικοποίησης γραμμής:

Char textexample \u003d "δοκιμή". // Ο τελευταίος χαρακτήρας δεν είναι γραμμένος, αλλά το μέγεθος είναι ακόμα 5

Χωρίς να λάβουμε λεπτομέρειες, δίνουμε ένα άλλο χρήσιμο τύπο δεδομένων - συμβολοσειρά. Χορδές
Αυτός ο τύπος μπορεί, για παράδειγμα, να αναδιπλώνεται:

String hello \u003d "hi",; Όνομα συμβολοσειράς \u003d "max!"; String hello_name \u003d hello + όνομα; // πάρτε τη γραμμή "Γεια σου, max!"

6. Σύνδεσμος

Int a \u003d 2; // η μεταβλητή "Α" υποδεικνύει την τιμή 2 int & b \u003d a; // η μεταβλητή "Β" υποδεικνύει πού και "Α" Β \u003d 4; // Αλλαγή της τιμής Β, ο προγραμματιστής αλλάζει την τιμή Α. Τώρα a \u003d 4 int & c \u003d 4; // σφάλμα, έτσι είναι αδύνατο, επειδή Σύνδεσμος Δεν μπορείτε να αντιστοιχίσετε μια τιμή

7. Δείκτης

Για να αντιμετωπίσετε αυτόν τον τύπο δεδομένων, πρέπει να θυμάστε ότι οι πολλές τιμές αυτού του τύπου - η διεύθυνση των κυττάρων μνήμης, όπου αρχίζουν τα δεδομένα. Επίσης, ο δείκτης υποστηρίζει τις λειτουργίες προσθήκης (+), αφαιρώντας (-) και την ανάκτηση (*).

Διευθύνσεις 0x0 σημαίνει ότι ο δείκτης είναι άδειος, δηλ. Δεν αναφέρεται κανένα στοιχείο. Αυτή η διεύθυνση έχει τη δική του κυριολεκτική - μηδενική:

Int * nullptr \u003d null; // κενός δείκτης

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

Η λειτουργία της απόκτησης δεδομένων που ξεκινά από τη διεύθυνση που είναι αποθηκευμένη στον δείκτη ονομάζεται RAMING (*). Το πρόγραμμα διαβάζει τον απαιτούμενο αριθμό κυττάρων μνήμης και επιστρέφει την τιμή που είναι αποθηκευμένη στη μνήμη.

Int valualinmemory \u003d 2; // ορίστε τη μεταβλητή του τύπου ακέραιου τύπου int * someptr \u003d // αντιγράψτε τη διεύθυνση της μεταβλητής, εδώ και επιστρέφει τη διεύθυνση της μεταβλητής του Someptr. // Διεύθυνση του κυττάρου μνήμης, για παράδειγμα, 0x2f * Someptr. // Η τιμή αποθηκεύεται σε 4 κύτταρα: 0x2f, 0x30, 0x31 και 0x32

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

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

8. Προσαρμογές

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

Χρώμα enum (κόκκινο, μπλε, πράσινο)?

Από προεπιλογή, κόκκινο \u003d 0, μπλε \u003d 1, πράσινο \u003d 2. Επομένως, οι τιμές μπορούν να συγκριθούν μεταξύ τους, δηλ. το κόκκινο< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

Πρόσβαση enum (ανάγνωση \u003d 1, εγγραφή \u003d 2, exec \u003d 4);

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

8 10 = 00001000 2

Το αποτέλεσμα της προσθήκης αυτών των αριθμών μεταξύ τους αναφέρει σαφώς σαφώς ποιοι αριθμοί ήταν:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

Κενός.

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

Κενό αντικείμενο; // Σφάλμα, δεν υπάρχουν αντικείμενα όπως κενό κενό // Σφάλμα, δεν υπάρχει σύνδεση με κενό κενό * PTR. // Εντάξει, αποθηκεύστε έναν δείκτη σε έναν άγνωστο τύπο

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

Εκμαγείο

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

Int integer \u003d 2; Float floating \u003d ακέραιο; // Floating \u003d 2.0

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

Υπάρχει ένας διαυγής μετασχηματισμός τύπου (έκρηξης), για να το κάνετε αυτό, στα αριστερά μιας μεταβλητής ή οποιαδήποτε τιμή του τύπου πηγής στις παρενθέσεις γράφονται ο τύπος που θα γίνει:

INT τιμή \u003d (int) 2.5;

Μονάδες και δυαδικές λειτουργίες

Οι ενέργειες που εκτελούσαμε νωρίτερα ονομάζονται δυαδικά: στα αριστερά και προς τα δεξιά του συμβόλου λειτουργίας είναι αξίες ή μεταβλητές, για παράδειγμα, 2 + 3. στις γλώσσες προγραμματισμού, εκτός από τις δυαδικές λειτουργίες που χρησιμοποιούν επίσης λειτουργίες εφαρμοστεί σε μεταβλητές. Μπορούν να είναι τόσο αριστερά όσο και δεξιά της μεταβλητής, αρκετές τέτοιες λειτουργίες συναντήθηκαν νωρίτερα - η λειτουργία μετάβασης (*) και η σύλληψη της διεύθυνσης της μεταβλητής (&) είναι Unary. Οι χειριστές "++" και "-" αυξάνουν και μειώνουν την αξία της ακέραιας μεταβλητής κατά 1, αντίστοιχα, μπορούν να γραφτούν είτε προς τα αριστερά είτε προς τα δεξιά της μεταβλητής.

Το C ++ εφαρμόζει επίσης μια συντομευμένη καταγραφή των δυαδικών δραστηριοτήτων στην περίπτωση που η ίδια μεταβλητή βρίσκεται στα αριστερά και τα δεξιά μέρη της έκφρασης, δηλ. Οποιαδήποτε λειτουργία εκτελείται με μεταβλητή τιμή και το αποτέλεσμα της λειτουργίας εισάγεται στην ίδια μεταβλητή:

Α + \u003d 2; // το ίδιο με το a \u003d a + 2. b / \u003d 5; // το ίδιο με το b \u003d b / 5; C & \u003d 3; // το ίδιο με το C \u003d C & 3;

Αυτό το αρχείο Scanque παρέχει πληροφορίες σχετικά με τους βασικούς τύπους δεδομένων της γλώσσας προγραμματισμού C ++ και των χαρακτηριστικών της εφαρμογής τους. Επίσης, στο τέλος της εγγραφής, ένας πίνακας καταρτίζεται με τις σειρές αυτών των τύπων αξιών.

Έννοια τύπου δεδομένων

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

Ο τύπος δεδομένων καθορίζει:

  • Εσωτερική παρουσίαση δεδομένων στη μνήμη του υπολογιστή.
  • Πολλές τιμές που μπορούν να λάβουν τις τιμές αυτού του τύπου.
  • Λειτουργίες και λειτουργίες που μπορούν να εφαρμοστούν στις τιμές αυτού του κασσίτερου.

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

Όλοι οι τύποι γλωσσών C ++ μπορούν να χωριστούν Συντήρηση και Χημική ένωση . Στη γλώσσα C ++, έξι Βασικός Τύποι δεδομένων για την αναπαράσταση των ακεραίων, των πραγματικών, συμβολικών και λογικών τιμών. Με βάση αυτούς τους τύπους, ο προγραμματιστής μπορεί να εισέλθει σε μια περιγραφή. Σύνθετος Τύπους. Αυτές περιλαμβάνουν συστοιχίες, μεταφορά, λειτουργίες, δομές, αναφορές, δείκτες, ενώσεις και μαθήματα.

Κύριοι τύποι δεδομένων στο C ++

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

  1. int (ολόκληρο)?
  2. char (σύμβολο);
  3. warch_t (προχωρημένο σύμβολο);
  4. bool (λογικό);
  5. float (πραγματικό)?
  6. Διπλή (ουσία πραγματικής ακρίβειας).

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

Υπάρχουν τέσσερα Χαρακτηριστικό τύπου Προσδιορίζοντας την εσωτερική αναπαράσταση και το εύρος τυπικών τύπων τιμών:

  • Σύντομη (σύντομη).
  • Μακρύ (μακρύ)?
  • Υπογεγραμμένο (σημάδι);
  • μη υπογραφεί.

Ολόκληρος τύπος (int)

Το μέγεθος του τύπου INT δεν καθορίζεται από το πρότυπο, αλλά εξαρτάται από τον υπολογιστή και τον μεταγλωττιστή. Για έναν επεξεργαστή 16-bit κάτω από το μέγεθος αυτού του τύπου, δίδονται 2 byte, για bytes 32 bit-4.

Ο χαρακτηριστής του αθλητισμού μπροστά από το όνομα τύπου δείχνει τον μεταγλωττιστή που απαιτείται ο αριθμός να διαρκέσει 2 bytes, ανεξάρτητα από την απόρριψη του επεξεργαστή. Ο μακρύς προσδιοριστής σημαίνει ότι ολόκληρη η τιμή θα καταλάβει 4 bytes. Έτσι, στον υπολογιστή 16-bit, τα ισοδύναμα int και τα μικρά int, και σε 32 bit - int και long int.

Εσωτερική άποψη Οι τιμές του συνόλου του τύπου είναι ένας ακέραιος σε δυαδικό κώδικα. Όταν χρησιμοποιείτε τον υπογεγραμμένο προσδιοριστή, το ανώτερο κομμάτι του αριθμού ερμηνεύεται ως ένα σημάδι (0 είναι ένας θετικός αριθμός, 1 - αρνητικός). Ο μη υπογεγραμμένος προσδιοριστής σάς επιτρέπει να αντιπροσωπεύετε μόνο θετικούς αριθμούς, καθώς η ανώτερη απόρριψη θεωρείται ως μέρος του κώδικα κώδικα. Έτσι, το φάσμα των τιμών του τύπου Int εξαρτάται από τους ειδικευμένους. Οι σειρές των τιμών των τιμών ενός ολόκληρου τύπου με διάφορους εξειδικευμένους υπολογιστές για τους υπολογιστές IBM PC δίδονται στις "σειρές απλών τύπων δεδομένων" στο τέλος της εγγραφής.

Από προεπιλογή, όλοι οι ακέραιος τύποι θεωρούνται εικονικοί, δηλαδή, ο υπογεγραμμένος προσδιοριστής μπορεί να μειωθεί.

Οι σταθερές που συναντώνται στο πρόγραμμα, ένας ή ένας άλλος τύπος αποδίδεται σύμφωνα με την άποψή τους. Εάν αυτός ο τύπος για κάποιο λόγο δεν ταιριάζει στον προγραμματιστή, μπορεί να καθορίσει ρητά τον απαιτούμενο τύπο με το sufifixes l, l (μακρύ) και u, u (μη υπογεγραμμένο). Για παράδειγμα, μια σταθερά 32L θα έχει ένα είδος μακράς και καταλόγου 4 bytes. Μπορείτε να χρησιμοποιήσετε τα επιθήματα L και u ταυτόχρονα, για παράδειγμα, 0x22ul ή 05lu.

Σημείωση

Οι τύποι σύντομων, μεγάλων, υπογεγραμμένων int και μη υπογεγραμμένους INT μπορούν να κοπούν σε σύντομο, μακρύ, υπογεγραμμένο και μη υπογεγραμμένο, αντίστοιχα.

Τύπος συμβόλου (Char)

Υπό το μέγεθος του τύπου χαρακτήρα, η ποσότητα του byte παρέχεται επαρκής για να φιλοξενήσει οποιοδήποτε χαρακτήρα από το σύνολο χαρακτήρων για αυτόν τον υπολογιστή, η οποία οδήγησε τον τίτλο τύπου. Κατά κανόνα, είναι 1 byte. Τύπος Char, όπως και άλλοι ολόκληροι τύποι, μπορεί να είναι με ένα σημάδι ή χωρίς σημάδι. Όσον αφορά το σημάδι, μπορείτε να αποθηκεύσετε τιμές στην περιοχή από -128 έως 127. Όταν χρησιμοποιείτε τις μη υπογεγραμμένες τιμές, οι τιμές μπορούν να είναι μεταξύ έως και 255. Αυτό είναι επαρκές για να αποθηκεύσετε οποιοδήποτε χαρακτήρα από το ASCII 256 χαρακτήρων σειρά. Οι τιμές του τύπου char χρησιμοποιούνται επίσης για την αποθήκευση ακέραιων ακέραιων που δεν υπερβαίνουν τα όρια των καθορισμένων περιοχών.

Προηγμένος τύπος συμβόλου (WAR_T)

Ο τύπος WAR_T έχει σχεδιαστεί για να λειτουργεί με ένα σύνολο χαρακτήρων, για την κωδικοποίηση που δεν είναι αρκετή από 1 byte, για παράδειγμα, Unicode. Το μέγεθος αυτού του τύπου εξαρτάται από την εφαρμογή. Κατά κανόνα, αντιστοιχεί στην άκρη σύντομη. Οι σταθερές συμβολοσειρών του τύπου WAR_T καταγράφονται με το πρόθεμα L, για παράδειγμα, L »Πύλες.

Λογικός τύπος (bool)

Τα μεγέθη του λογικού τύπου μπορούν να λάβουν μόνο αληθείς και ψευδείς τιμές που είναι δεσμευμένες λέξεις. Την εσωτερική μορφή εκπροσώπησης της αξίας του FALSE - 0 (μηδέν). Οποιαδήποτε άλλη τιμή ερμηνεύεται ως αλήθεια. Όταν μετατρέπεται σε ολόκληρο τον πραγματικό τύπο είναι 1.

Floating Point Τύποι (Float, Διπλό και μακρύ διπλό)

Το πρότυπο C ++ ορίζει τρεις τύπους αποθήκευσης δεδομένων πραγματικών τιμών: float, διπλό και μακρύ διπλό.

Οι τύποι δεδομένων πλωτών σημείων αποθηκεύονται στη μνήμη του υπολογιστή διαφορετικά από τον ακέραιο αριθμό. Η εσωτερική αναπαράσταση του πραγματικού αριθμού αποτελείται από δύο μέρη - Mantissa και παραγγελία. Στην IBM υπολογιστές υπολογιστών υπολογιστών PC, το μέγεθος του τύπου πλωτήρα καταλαμβάνεται από 4 byte, εκ των οποίων μια δυαδική εκκένωση εκκενώνεται από το σήμα Mantissa, 8 απορρίψεις υπό την παραγγελία και 23 κάτω από την Mantissa. Η Mantissa είναι ένας αριθμός, περισσότερο από 1.0, αλλά λιγότερο 2.0. Δεδομένου ότι το ανώτερο ψηφίο Mantissa είναι πάντα ίσο με 1, δεν είναι αποθηκευμένο.

Για τις τιμές του τύπου διπλά, καταλαμβάνουν 8 bytes, 11 και 52 εκφόρτιση, αντίστοιχα. Το μήκος της Mantissa καθορίζει την ακρίβεια του αριθμού και το μήκος του μήκους είναι το εύρος του. Όπως μπορεί να φανεί από τον πίνακα στο τέλος του ρεκόρ, με τον ίδιο αριθμό bytes, που αντιστοιχεί στον τύπο του πλωτήρα και του Long Int, οι κλίμακες των επιτρεπόμενων τιμών τους διαφέρουν σημαντικά Λόγω της εσωτερικής μορφής εκπροσώπησης.

Ο μακρύς προσδιοριστής μπροστά από το όνομα διπλού τύπου υποδηλώνει ότι τα 10 bytes δίδονται υπό το μέγεθος του.

Οι κυμαινόμενες σταθερές σημείων έχουν ένα προεπιλεγμένο τύπο διπλού. Μπορείτε να καθορίσετε ρητά τον τύπο σταθερά χρησιμοποιώντας τα Sfixes F, F (Float) και L L, L (Long). Για παράδειγμα, η σταθερά 2Ε + 6L θα έχει μακρύ διπλό τύπο και η σταθερά 1,82F είναι ο τύπος πλωτήρα.

Για να γράψετε φορητή σε διάφορες πλατφόρμες προγραμμάτων, είναι αδύνατο να κάνετε υποθέσεις σχετικά με το μέγεθος του τύπου int. Για να το αποκτήσετε, πρέπει να χρησιμοποιήσετε τη λειτουργία μεγέθους, το αποτέλεσμα του οποίου είναι το μέγεθος του τύπου των bytes. Για παράδειγμα, για το λειτουργικό σύστημα MS-DOS (Int), θα δώσει ως αποτέλεσμα και για τα Windows 98 ή το OS / 2, το αποτέλεσμα θα είναι 4.

Στα πρότυπα ANSI, οι σειρές βασικών τύπων δεν καθορίζονται, προσδιορίζονται μόνο οι σχέσεις μεταξύ των μεγεθών τους, για παράδειγμα:

Μέγεθος (πλωτήρα) ≤ Slzeof (διπλό) ≤ μεγέθους (μακρύ διπλό)
Μέγεθος (Char) ≤ Slzeof (SHORT) ≤ Μεγάλος (Int) ≤ Μέγεθος (μακρύ)

Σημείωση

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

Τύπος κενού

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

Οι σειρές απλών τύπων δεδομένων στο C ++ για τους υπολογιστές συμβατών IBM PC

Ερ: Τι σημαίνει ο όρος IBM υπολογιστής συμβατός με υπολογιστή;
Α: Υπολογιστής συμβατοί υπολογιστή IBM PC (ENG. IBM PC συμβατός) - υπολογιστής, αρχιτεκτονικά κοντά στο IBM PC, XT και AT. Οι υπολογιστές συμβατών IBM PC βασίζονται με βάση τα μικροεπεξεργαστή συμβατά με την Intel 8086 (και, όπως γνωρίζετε, όλοι οι Intel που εκδίδουν αργότερα επεξεργαστές έχουν πλήρη συμβατότητα προς τα πίσω από το 8086). Στην πραγματικότητα, είναι σχεδόν όλοι οι σύγχρονοι υπολογιστές.

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

Ενα είδος Εύρος τιμών Μέγεθος (byte)
Κούπα Σωστό και λάθος 1
Υπογεγραμμένο char. -128 … 127 1
Μη υπογεγραμμένο char. 0 … 255 1
Υπογεγραμμένο σύντομο int. -32 768 … 32 767 2
Μη υπογεγραμμένο σύντομο int. 0 … 65 535 2
Υπογεγραμμένη μακρά int. -2 147 483 648 … 2 147 483 647 4
Μη υπογεγραμμένη μακρά int 0 … 4 294 967 295 4
φλοτέρ 3.4E-38 ... 3.4E + 38 4
Διπλό. 1.7e-308 ... 1,7c + 308 8
Μακρύ διπλό. 3.4E-4932 ... 3.4E + 4932 10

Για τους πραγματικούς τύπους, ο πίνακας δείχνει τις απόλυτες τιμές των ελάχιστων και μέγιστων τιμών.

Σε αυτό το μάθημα θα μάθετε Γλώσσα αλφάβητου C ++καθώς και τι τύποι δεδομένων Μπορεί να χειριστεί το πρόγραμμα σε αυτό. Ίσως αυτή να μην είναι η πιο συναρπαστική στιγμή, αλλά αυτές οι γνώσεις είναι απαραίτητες! Επιπλέον, έχοντας αρχίσει να μαθαίνετε οποιαδήποτε άλλη γλώσσα προγραμματισμού γλωσσών, θα περάσετε περισσότερο το ίδιο βήμα μάθησης. Το πρόγραμμα γλωσσών C ++ μπορεί να περιέχει τους ακόλουθους χαρακτήρες:

  • Κεφάλαιο, πεζά λατινικά γράμματα Α, Β, Γ ..., Χ, Υ, Ζ και υπογράμμιση.
  • Αραβικοί αριθμοί από 0 έως 9;
  • Ειδικά σημάδια: (), | , () + - /% *. \\ ':?< > = ! & # ~ ; ^
  • Σύμβολα του χώρου, καρτέλες και μετάβαση σε μια νέα συμβολοσειρά.

Στη δοκιμή του προγράμματος μπορείτε να χρησιμοποιήσετε Σχόλια. Εάν το κείμενο με δύο χαρακτήρες "Oblique χαρακτηριστικό" // και τελειώνει με ένα σύμβολο μετάβασης σε μια νέα συμβολοσειρά ή συνάπτεται μεταξύ χαρακτήρων / * και * /, τότε ο μεταγλωττιστής το αγνοεί.

Δεδομένα στο C ++

Για την επίλυση της εργασίας σε οποιοδήποτε πρόγραμμα, οποιαδήποτε δεδομένα υποβάλλονται σε επεξεργασία. Μπορεί να είναι ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙ: Ολόκληροι και πραγματικοί αριθμοί, σύμβολα, γραμμές, συστοιχίες. Τα δεδομένα στο C ++ είναι συνηθισμένα για να περιγραφούν στην αρχή της λειτουργίας. ΠΡΟΣ ΤΗΝ Βασικοί τύποι δεδομένων Γλώσσα ανήκουν:

Για να σχηματίσουν άλλους τύπους δεδομένων, χρησιμοποιήστε το βασικό και το λεγόμενο Προσδιορισμός.Το C ++ ορίζει τέσσερις ειδικοί τύπου δεδομένων:

  • Σύντομη - σύντομη?
  • Μακρά.
  • Υπογεγραμμένο - υπογράψει;
  • μη υπογεγραμμένο - μη αυτόματο.

Τύπος ακέραιας

Πληκτρολογήστε μεταβλητή int. Ο υπολογιστής μπορεί να καταλάβει είτε 2 ή 4 byte. Εξαρτάται από την αποδεικότητα του επεξεργαστή. Από προεπιλογή, όλοι οι ολόκληροι τύποι θεωρούνται εικονικοί, δηλαδή, ο προσδιοριστής Υπογράφηκε.Δεν μπορείτε να ορίσετε. Προσδιοριστής μη υπογραφεί.Σας επιτρέπει να αντιπροσωπεύετε μόνο θετικούς αριθμούς. Παρακάτω υπάρχουν μερικές κλίμακες των τιμών ολόκληρου του τύπου.

Ενα είδος Εύρος Το μέγεθος
int. -2147483648…2147483647 4 byte
μη υπογραφεί. 0…4294967295 4 byte
Υπογεγραμμένο int. -2147483648…2147483647 4 byte
Σύντομη int -32768…32767 2 byte
Μακρύς -2147483648…2147483647 4 byte
Μη υπογεγραμμένο σύντομο int. 0…65535 2 byte

Πραγματικός τύπος

Ο αριθμός πλωτό σημείο παρουσιάζεται με τη μορφή μου + - P, όπου το m είναι mantisse (ένας ακέραιος ή κλασματικός αριθμός με ένα δεκαδικό σημείο), το P είναι μια παραγγελία (ακέραιος). Συνήθως οι τιμές του τύπου φλοτέρκαταλαμβάνουν 4 byte, και Διπλό.8 bytes. Ο πίνακας κυμαίνεται από αξίες του πραγματικού τύπου:

φλοτέρ 3,4E-38 ... 3,4E + 38 4 byte
Διπλό. 1,7E-308 ... 1.7E + 308 8 byte
Μακρύ διπλό. 3,4E-4932 ... 3,4E + 4932 8 byte

Λογικός τύπος

Πληκτρολογήστε μεταβλητή Κούπαμπορεί να πάρει μόνο δύο έννοιες Αληθές (αληθής ) ή ΛαϊκέςΨευδής ). Ο καθένας, που δεν είναι ίσος με το μηδέν, ερμηνεύεται ως Αληθής.αξία ψευδής Που παρουσιάζονται στη μνήμη ως 0.

Τύπος κενού

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

Μετασχηματισμός τύπων δεδομένων

Το C ++ διακρίνει δύο τύπους μετατροπής τύπων δεδομένων: ρητή και σιωπηρή.

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

#Include "stdafx.h" #include Χρησιμοποιώντας το Namespace STD. Int main () (int i \u003d 5; float f \u003d 10.12; cout<\u003e κενό "); Επιστροφή 0;)

#Include "stdafx.h"

#Περιλαμβάνω.

Χρησιμοποιώντας το Namespace STD.

iNT κύριο ()

int i \u003d 5; Float f \u003d 10.12;

Όκτος<< i / f ;

("Παύση \u003e\u003e κενή");

Επιστροφή 0;

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

  • Ρητή μετατροπή Σε αντίθεση με τον προγραμματιστή. Υπάρχουν διάφοροι τρόποι τέτοιας μετατροπής:
  1. Μετασχηματισμός σε στυλ ΝΤΟ.: (Float) α
  2. Μετασχηματισμός σε στυλ C ++.: float ()

Επίσης, οι τύποι τύπων μπορούν να πραγματοποιηθούν χρησιμοποιώντας τις ακόλουθες λειτουργίες:

static_cast.<> () Const_cast.<> () Reinterpret_cast.<> () Dynamic_cast.<> ()

static_cast.<> ()

const_cast.<> ()

reinterpret_cast.<> ()

dynamic_cast.<> ()

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

Πληκτρολογήστε static_cast.<Тип> (ένα αντικείμενο);

Με τη βοήθεια του Static_Cast, είναι αδύνατο να αφαιρεθεί η σταθερότητα της μεταβλητής, αλλά είναι δυνάμεις στον επόμενο χειριστή. const_cast. - Εφαρμόζεται μόνο όταν πρέπει να αφαιρέσετε την σταθερότητα του αντικειμένου. Η σύνταξη θα μοιάζει με αυτό:

Ενα είδος Const_cast.< Ενα είδος> (ένα αντικείμενο);

reinterpret_cast.- Χρησιμοποιείται για τη μετατροπή διαφόρων τύπων, ακέραιων αριθμών στον δείκτη και αντίστροφα. Εάν είδατε τη νέα λέξη "δείκτη" - μην φοβάστε! Αυτός είναι επίσης ένας τύπος δεδομένων, αλλά δεν θα συνεργαστούμε σύντομα. Η σύνταξη εδώ είναι η ίδια με ό, τι, στους φορείς εκμετάλλευσης που είχαν προηγουμένως αναθεωρήσει:

Ενα είδος Relerpret._Εκμαγείο.< Ενα είδος> (ένα αντικείμενο);

dynamic_cast. - Χρησιμοποιείται για τη δυναμική μετατροπή των τύπων, εφαρμόζει τη ρύθμιση των δεικτών ή των συνδέσμων. Σύνταξη:

Ενα είδος Δυναμικός _Εκμαγείο.< Ενα είδος> (ένα αντικείμενο);

Διαχείριση συμβόλων

Με μερικούς από αυτούς τους πιο "χαρακτήρες ελέγχου" είστε ήδη εξοικειωμένοι (για παράδειγμα, με \\ N.). Όλα ξεκινούν με την αντίστροφη "Slash" και επίσης πλαισιώνονται με διπλά εισαγωγικά.

Εικόνα

Εξάγωνο κωδικό

Ονομα

Beeper Beep

Επιστρέψτε στο βήμα

Μετάφραση σελίδας (μορφή)

Γραμμή μετάφρασης

Επιστροφή φορείο

Οριζόντιος πίνακας

Κατακόρυφος

Απάντηση:
  1. Τύποι δεδομένων Extan:

Σύντομη int, μη υπογεγραμμένη μικρή int, int, μη υπογεγραμμένη int, μακρά, μη υπογεγραμμένη.

  1. Floating τύποι δεδομένων ερωτηματικών (συμμορφώνονται με τον πραγματικό τύπο):

float, διπλό, μακρύ διπλό.

  1. Τύπος δεδομένων συμβόλου:

char (υπογεγραμμένο char), μη υπογεγραμμένο char, warch_t.

  1. Τύπος λογικής δεδομένων:

bool.

  1. Τύπος απαριθμημένων δεδομένων (που καταχωρούνται στο Visual C ++):

enum.

2. Ποια είναι τα χαρακτηριστικά της χρήσης τύπων ακέραιων δεδομένων;

Στο C ++, οι κύριοι τύποι δεδομένων ακέραιου αριθμού: σύντομες, μη υπογεγραμμένες μικρές int, int, μη υπογεγραμμένη int, long int, μη υπογεγραμμένη μακρά (μη υπογεγραμμένη μακρά int).

Αυτοί οι τύποι δεδομένων αντιπροσωπεύουν τιμές από ένα πλήθος ακεραίων. Για παράδειγμα:

2 -100 398

Οι τύποι δεδομένων που ξεκινούν από τη μη υπογραφή κονσόλα μπορούν να περιέχουν μόνο θετικούς αριθμούς.

Σύντομο, μη υπογεγραμμένο σύντομο int δεδομένων διαρκεί δύο φορές λιγότερο στη μνήμη από την Int, μη υπογεγραμμένη int.

Ο τύπος δεδομένων μακρύς, μη υπογεγραμμένος μακρύς είναι διπλάσιος από τη μνήμη από την Int, μη υπογεγραμμένη int.

3. Πώς στο πρόγραμμα περιγράφει μια μεταβλητή που ονομάζεται X ενός ολόκληρου τύπου;

Απάντηση:
int x; // ακέραιος με ένα σημάδι

Ως αποτέλεσμα, κάτω από τη μεταβλητή Χ. Θα υπάρχει μια θέση στη μνήμη των 4 byte. Το μέγεθος της μνήμης που κατανέμεται στη μεταβλητή εξαρτάται από τα χαρακτηριστικά του υπολογιστή, τον τύπο λειτουργικού συστήματος και τις ρυθμίσεις μεταγλωττιστή.

4. Πώς να καταγράψετε έναν αριθμό 239 σε μια μεταβλητή;

Για να το κάνετε αυτό, χρησιμοποιήστε τον χειριστή ανάθεσης, η οποία δηλώνεται από το σύμβολο '\u003d'.

Απάντηση 1. Κάνοντας έναν αριθμό σε μια μεταβλητή μετά την περιγραφή του.

int x; x \u003d 239;

Απάντηση 2. Κάνοντας έναν αριθμό στη μεταβλητή κατά την περιγραφή της (αρχική αρχικοποίηση).

int x \u003d 239;

5. Ποια είναι τα χαρακτηριστικά των τύπων δεδομένων που επιπλέουν;

Οι τύποι πλωτά ερωτηματικά επιτρέπεται να αντιπροσωπεύουν τιμές από ένα πλήθος πραγματικών αριθμών. Για παράδειγμα:

8.35 -990.399 239.0.

Το C ++ έχει τους ακόλουθους βασικούς τύπους δεδομένων πλωτών σημείων:

float, διπλό, μακρύ διπλό.

Ένας διπλός τύπος μεταβλητής διαρκεί 2 φορές περισσότερο χώρο στη μνήμη του υπολογιστή από έναν μεταβλητό τύπο πλωτήρα.

Επίσης, ένας μεταβλητός τύπος μακρύ διπλού διαρκεί 2 φορές περισσότερο χώρο στη μνήμη του υπολογιστή από ένα διπλό τύπου μεταβλητού.

6. Πώς να περιγράψετε μια μεταβλητή που παίρνει μια πλωτή τιμή σημείων;

Ένα παράδειγμα περιγραφής των μεταβλητών τύπου πλωτήρα, διπλό, μακρύ διπλό:

float f; Διπλό D; Μακρύ διπλό ld;

7. Τρόπος καταγραφής αριθμητικών τιμών σε μεταβλητή πλωτή σημεία;

Ένα παράδειγμα κατασκευής αριθμητικών δεδομένων σε μεταβλητές τύπους πλωτή σημείων:

float f \u003d -9928.45; // Εκκίνηση αρχικοποίησης Διπλό D; Μακρύ διπλό ld; d \u003d 0,445332; // Ανάθεση χειριστή lD \u003d 3892923898239.030903; // Ανάθεση χειριστή

8. Πώς να μεταφράσετε έναν μεταβλητό τύπο πλωτήρα στον τύπο int;

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

float a; int b; a \u003d 8.457; b \u003d (int) a; // b \u003d 8

Όταν χρησιμοποιείτε λειτουργίες τύπου Drive, πρέπει να λάβετε υπόψη τους περιορισμούς που υπερβαίνουν τους τύπους που καταλαμβάνουν λιγότερο χώρο στη μνήμη του υπολογιστή.

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

Σύντομη int i; float f; f \u003d 3990099.8; i \u003d (int) f; // i \u003d -7597 - υπερχείλιση

9. Πώς να μεταφράσετε μια μεταβλητή από τον τύπο int σε διπλό τύπο;

Παράδειγμα φέρνοντας με int σε διπλό:

int i; Διπλό D; i \u003d 982; d \u003d (διπλό) i; // D \u003d 982.0

10. Ποια είναι τα χαρακτηριστικά της χρήσης χαρακτήρων τύπου δεδομένων (συμβολικά δεδομένα) στο πρόγραμμα;

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

Για παράδειγμα, ο κώδικας του συμβόλου 'F' είναι ίσος με την τιμή του 102.

Το θραύσμα κώδικα στο οποίο υπολογίζεται ο κωδικός συμβόλου:

iNT κώδικα. Σύμβολο χαρακτήρα? Σύμβολο \u003d "F"; Σύμβολο κώδικα \u003d (int). // code \u003d 102

Τα δεδομένα τύπου char είναι οι ίδιοι ακέραιοι. Τα δεδομένα τύπου char καταλαμβάνουν 1 byte στη μνήμη του υπολογιστή.

Ο λόγος "κωδικού συμβόλου" τοποθετείται στο τραπέζι των συμβόλων των Windows. Τα σύμβολα με κωδικούς από 0 έως 127 είναι αποκλεισμένοι χαρακτήρες BIOS. Περιλαμβάνουν τους πιο κατανάλωτοι χαρακτήρες, χαρακτήρες αριθμών, σύμβολα του λατινικού αλφαβήτου. Αυτοί οι χαρακτήρες δεν μπορούν να αλλάξουν.

Τα σύμβολα με κωδικούς από 128 έως 255 είναι τα περιφερειακά σύμβολα που συνδέονται με ένα συγκεκριμένο αλφάβητο αυτού του υπολογιστή στον οποίο το εγκατεστημένο λειτουργικό σύστημα Παράθυρα.

11. Ποια είναι τα χαρακτηριστικά της χρήσης BOOL τύπου δεδομένων (λογικός τύπος);

Οι μεταβλητές του τύπου Bool μπορούν να λάβουν μόνο δύο τιμές:

Αληθινή αλήθεια,

fALSE - LIE.

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

Κωδικός αποσπάσματος που καθορίζει Αριθμητικές τιμές Σωστό και λάθος:

iNT αποτέλεσμα. bool b; Αποτέλεσμα \u003d (INT) TRUE. // αποτέλεσμα \u003d 1 b \u003d false; αποτέλεσμα \u003d (int) b; // αποτέλεσμα \u003d 0

Το κομμάτι κώδικα που μετατρέπει τους τύπους int και επιπλέουν στο bool:

int i; float f; bool b; i \u003d 6; b \u003d (bool) i; // b \u003d true f \u003d 0,0; b \u003d (bool) f; // b \u003d false

12. Πώς να προσδιορίσετε το μέγεθος της μνήμης που λαμβάνει τη μεταβλητή αυτού του τύπου;

Αυτό χρησιμοποιεί τη λειτουργία μεγέθους ().

Το θραύσμα κώδικα που καθορίζει το μέγεθος ορισμένων τύπων δεδομένων:

int d; d \u003d μέγεθος (char); // d \u003d 1 d \u003d μέγεθος (μη υπογραφεί int); // d \u003d 4 d \u003d μέγεθος (float); // d \u003d 4 d \u003d μέγεθος (διπλό); // d \u003d 8

13. Πώς είναι η αρχικοποίηση των μεταβλητών διαφορετικών τύπων;

int d \u003d 28; float z \u003d (float) 2.85; char c \u003d "k"? String ^ s \u003d "Γεια σας!" ; Διπλό R \u003d -8.559;

14. Πώς να προσδιορίσετε τη μέγιστη επιτρεπόμενη (ελάχιστη επιτρεπόμενη) τιμή μιας μεταβλητής ενός συγκεκριμένου τύπου;

Για να προσδιορίσετε το πιο επιτρεπόμενο ή το ελάχιστο επιτρεπτή αξία Μεταβλητή κάποιου τύπου στη βιβλιοθήκη. Πλαίσιο δικτύου. Χρησιμοποιούνται ιδιότητες maxvalue και minvalue.

Παραδείγματα προσδιορισμού των οριακών τιμών των μεταβλητών διαφορετικών τύπων.

Για μεταβλητές τύπου INT:

// τύπος int. int i; Μακρύ maxint; Μακρύς λεπτά. Maxint \u003d (μακρύ) i.maxvalue; // maxint \u003d 2147483647 Minint \u003d (μακρύ) i.minvalue; // minint \u003d -2147483648

Για μεταβλητές τύπου Σύντομη INT:

// πληκτρολογήστε σύντομα int Σύντομη Int Si; int maxint? int minint. Maxint \u003d (int) si.maxvalue; // Maxint \u003d 32767 Minint \u003d (int) si.minvalue; // minint \u003d -32768

Για μη υπογεγραμμένες μεταβλητές INT:

// Unsigned Int μη υπογεγραμμένο int ui? Μη υπογεγραμμένο INT Maxint. μη υπογεγραμμένο ιντσών. Maxint \u003d ui.maxvalue; // Maxint \u003d 4294967295 Minint \u003d ui.minvalue; // minint \u003d 0

Για μεταβλητές τύπου πλωτήρα:

// τύπος πλωτήρα. float f; float maxf; float minf; Maxf \u003d f.maxvalue; // maxf \u003d 3.402823E + 38 Minf \u003d f.minvalue; // minf \u003d -3.402823e + 38

Για τον τύπο μεταβλητών διπλό:

// Τύπος διπλού Διπλό D; Διπλό maxd; Διπλό μυαλό; Max \u003d d.maxvalue; // max \u003d 1.79769313486232e + 308 Min \u003d d.minvalue; // min \u003d -1.79769313486232e + 308

Για τους μεταβλητές τύπου CHAR:

// τύπου char. char c; int maxc; int minc; Max \u003d (int) c.maxvalue; // max \u003d 127 Min \u003d (int) c.minvalue; // min \u003d -128

15. Ποια είναι τα χαρακτηριστικά της χρήσης του τύπου του ENUM;

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

Ένα παράδειγμα χρήσης του τύπου ENUM για να δηλώσει μήνες του έτους:

enum μήνες (Ιανουάριος, Fabruary, Μάρτιο, Απρίλιος, Μάιος, Ιούνιος, Ιούλιος, Αύγουστος, Σεπτέμβριος, Οκτώβριος, Νοέμβριος, DECEPT) MN; mn \u003d Ιανουάριος; // mn \u003d 0 mn \u003d Μάρτιος; // mn \u003d 2 mn \u003d Σεπτέμβριος. // mn \u003d 8

Το παράδειγμα περιγράφει τη μεταβλητή με το όνομα MNUM MONHS τύπου MN. Γωνιακές τιμές των μηνών (Ιανουάριος, Φεβρουάριος, ...) Ξεκινήστε με 0 (0, 1, 2, ...). Η μνημονική αξία του Ιανουαρίου αντιστοιχεί σε μια ακέραια τιμή 0, η μνημονική τιμή του Φεβρουαρίου αντιστοιχεί σε μια ακέραια τιμή 1 κλπ.

Έτσι, χρησιμοποιώντας τον τύπο ENUM, η μνημονική σημείωση μπορεί να χρησιμοποιηθεί στο κείμενο του προγράμματος για καλύτερη σαφήνεια του πηγαίου κώδικα.

Μπορείτε να γράψετε και έτσι:

mn \u003d (enum monhs) 2; // mn \u003d Μάρτιος mn \u003d (enum monhs) 11; // mn \u003d Δεκέμβριος

16. Ποια χαρακτηριστικά του τύπου τύπουΚενός. σε προγράμματαΝΤΟ.++ ?

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

  • Εάν πρέπει να περιγράψετε μια λειτουργία που δεν επιστρέφει οποιαδήποτε τιμή (βλέπε παράδειγμα).
  • Εάν πρέπει να περιγράψετε μια λειτουργία που δεν λαμβάνει παραμέτρους (βλέπε παράδειγμα).

Παράδειγμα. Η λειτουργία MyFun () χωρίς παράμετροι που δεν επιστρέφουν οποιαδήποτε τιμή (επιστρέφει τον τύπο κενού) και δεν λαμβάνει παραμέτρους.

Δημόσιο: VOID MYFUN (κενό) { // λειτουργία σώματος // ... ΕΠΙΣΤΡΟΦΗ; // Επιστροφή από μια λειτουργία που δεν επιστρέφει τιμές } // Λειτουργία κλήσης από το πρόγραμμα ... Myfun (); ...

17. Είναι δυνατόν να δηλώσετε μια μεταβλητή τύπουΚενός. σε ένα πρόγραμμα;

Είναι αδύνατο, καθώς ο τύπος κενού δεν συσχετίζεται με την τιμή.

Η ανακοίνωση ενός κενού τύπου μεταβλητού οδηγεί σε σφάλμα σύνταξης με έξοδο μηνύματος:

"Παράνομη χρήση τύπου κενού"

18. Ποια είναι τα χαρακτηριστικά του τύπου τύπουwARA._ Τ. σεΟπτικός ΝΤΟ.++ ?

Οι μεταβλητές τύπου char (βλέπε προηγούμενα στοιχεία) χρησιμοποιούνται για την αποθήκευση 8-bit ASCII -Simvols.

Ο τύπος WAR_T χρησιμοποιείται για την αποθήκευση χαρακτήρων που αποτελούν μέρος μεγάλων συνόλων χαρακτήρων. Για παράδειγμα, στο κινεζικό αλφάβητο υπάρχει ένας τεράστιος αριθμός χαρακτήρων. 8 Οι απορρίψεις δεν αρκούν για να παρουσιάσουν ολόκληρο το σύνολο των κινεζικών χαρακτήρων αλφαβήτου. Επομένως, αν χρειαστεί να χρησιμοποιήσετε το πρόγραμμα στη διεθνή αγορά, συνιστάται η αντικατάσταση του τύπου char στο WARS_T.

Παράδειγμα Χρήση τύπου WARS_T.

... warch_t t; // για μεταβλητή t διατίθενται 2 byte μνήμης t \u003d "s"? ...

Τελευταία ενημέρωση: 09/17/2017

Κάθε μεταβλητή έχει συγκεκριμένο τύπο. Και αυτός ο τύπος καθορίζει ποιες τιμές μπορούν να έχουν μια μεταβλητή, η οποία λειτουργεί με αυτό μπορεί να γίνει και πόση byte στη μνήμη θα καταλάβει. Οι ακόλουθοι βασικοί τύποι δεδομένων ορίζονται στο C ++:

    bOOL: λογικός τύπος. Μπορεί να πάρει μια από τις δύο τιμές αληθινές (αλήθεια) και ψευδές (ψέματα). Το μέγεθος της κατεχόμενης μνήμης για αυτόν τον τύπο σίγουρα δεν ορίζεται.

    cHAR: Αντιπροσωπεύει ένα χαρακτήρα στην κωδικοποίηση ASCII. Χρειάζεται μνήμη 1 byte (8 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από την περιοχή από -128 έως 127 ή από 0 έως 255

    Υπογεγραμμένο char: αντιπροσωπεύει έναν χαρακτήρα. Χρειάζεται μνήμη 1 byte (8 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από την περιοχή από -128 έως 127

    unsigned Char: Αντιπροσωπεύει έναν χαρακτήρα. Χρειάζεται μνήμη 1 byte (8 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από το εύρος από 0 έως 255

    warch_t: αντιπροσωπεύει ένα εκτεταμένο σύμβολο. Στα Windows λαμβάνει στη μνήμη 2 byte (16 bits), σε Linux - 4 bytes (32 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από το εύρος από 0 έως 65 535 (σε 2 bytes), ή από 0 έως 4 294 967 295 (για 4 bytes)

    char16_T: αντιπροσωπεύει έναν χαρακτήρα σε κωδικοποίηση Unicode. Λαμβάνει μνήμη 2 byte (16 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από το εύρος από 0 έως 65 535

    char32_t: αντιπροσωπεύει έναν χαρακτήρα σε κωδικοποίηση Unicode. Παίρνει στη μνήμη 4 bytes (32 bits). Μπορεί να αποθηκεύσει οποιαδήποτε τιμή από το εύρος από 0 έως 4 294 967 295

    Σύντομη: αντιπροσωπεύει έναν ακέραιο αριθμό στην περιοχή από -32768 έως 32767. Λαμβάνει μνήμη 2 byte (16 bits).

    Αυτός ο τύπος έχει επίσης συνώνυμα για μικρές int, υπογεγραμμένο σύντομο int, υπογεγραμμένο σύντομο.

    unsigned Short: Παρουσιάζει έναν ακέραιο αριθμό στην περιοχή από 0 έως 65535. Λαμβάνει μνήμη 2 byte (16 bits).

    Αυτός ο τύπος έχει επίσης συνώνυμο για μη υπογεγραμμένο σύντομο int.

    int: Αντιπροσωπεύει έναν ακέραιο αριθμό. Ανάλογα με την αρχιτεκτονική του επεξεργαστή, 2 bytes (16 bits) ή 4 byte (32 bits) μπορούν να καταλάβουν 2 byte. Το φάσμα των οριακών τιμών μπορεί να κυμαίνεται επίσης από -32768 έως 32767 (σε 2 bytes) ή από -2 147 483 648 έως 2 147 483 647 (σε 4 bytes). Αλλά σε κάθε περίπτωση, το μέγεθος πρέπει να είναι μεγαλύτερο ή ίσο με το μέγεθος του τύπου βραχυπρόθεσμα και λιγότερο ή είναι ίσο με το μέγεθος μακρύ

    Αυτός ο τύπος έχει συνώνυμα που υπογράφουν int και υπογεγραμμένα.

    unsigned Int: Αντιπροσωπεύει έναν θετικό ακέραιο αριθμό. Ανάλογα με την αρχιτεκτονική του επεξεργαστή, 2 bytes μπορεί να καταλάβουν (16 bits) ή 4 bytes (32 bits) και λόγω αυτού του εύρους οριακών τιμών μπορεί να διαφέρουν: από 0 έως 65535 (για 2 bytes) ή από 0 έως 4 294 967 295 (για 4 bytes).

    Ως συνώνυμο για αυτόν τον τύπο μπορεί να χρησιμοποιηθεί μη υπογραφεί

    Μεγάλο: ενέχει ένα ακέραιο στον κλίμασμα από -2 147 483 648 έως 2 147 483 647. Λαμβάνει μνήμη 4 byte (32 bits).

    Αυτός ο τύπος έχει επίσης συνώνυμα για Long Int, υπογράψει Long Int και υπογράψει μακρά

    Δεν υπάρχει ένας ακέραιος αριθμός: ενέχει ένα ακέραιο στην περιοχή από 0 έως 4 294 967 295. Λαμβάνει μνήμη 4 bytes (32 bits).

    Έχει συνώνυμο μη υπογεγραμμένο μακρύ int.

    Μεγάλη μακρά: παρουσιάζει έναν ακέραιο στον κλίμακα από -9 223 372 036 854 775 808 έως +9 223 372 036 854 775 807. Λαμβάνει μνήμη, κατά κανόνα, 8 byte (64 bits).

    Έχει συνώνυμα μακρά, υπογεγραμμένη μακρά και υπογεγραμμένη μακρά.

    Δεν υπογεγραμμένος μακρύς χρόνος: αντιπροσωπεύει έναν ακέραιο αριθμό κυμαίνεται από 0 έως 18 446 744 073 709 551 615. Λαμβάνει μνήμη, κατά κανόνα, 8 byte (64 bits).

    Έχει συνώνυμο μη υπογεγραμμένο μακρύς int.

    float: Αντιπροσωπεύει έναν πραγματικό αριθμό συνηθισμένης ακρίβειας με ένα πλωτό σημείο στην περιοχή +/- 3.4E-38 έως 3.4E + 38. Στη μνήμη καταλαμβάνει 4 byte (32 bits)

    Διπλά: Αντιπροσωπεύει έναν πραγματικό αριθμό διπλής ακρίβειας με ένα πλωτό σημείο στην περιοχή +/- 1.7E-308 έως 1.7E + 308. Στη μνήμη χρειάζονται 8 byte (64 bits)

    Μακρύ διπλό: αντιπροσωπεύει έναν πραγματικό αριθμό διπλής ακρίβειας με ένα πλωτό σημείο τουλάχιστον 8 bytes (64 bits). Ανάλογα με το μέγεθος της μνήμης, το φάσμα των επιτρεπόμενων τιμών μπορεί να διαφέρει.

    κενό: Τύπος χωρίς αξία

Έτσι, όλοι οι τύποι δεδομένων εκτός από το κενό μπορούν να χωριστούν σε τρεις ομάδες: συμβολική (char, warch_t, char16_t, char32_t), ακέραιο (σύντομο, int, μακρύ, μήκος) και αριθμούς πλωτά σημεία (float, διπλό, μακρύ διπλό).

Συμβολικοί τύποι

Για να δείτε τους χαρακτήρες στην εφαρμογή, χρησιμοποιούνται οι τύποι char, warch_t, char16_t και char32_t.

Ορίζουμε διάφορες μεταβλητές:

Char c \u003d "d". warch_t d \u003d "c";

Η μεταβλητή τύπου char ως μια τιμή παίρνει ένα χαρακτήρα μέσα Ενιαία αποσπάσματα: Char c \u003d "d". Μπορείτε επίσης να αντιστοιχίσετε έναν αριθμό από την προαναφερθείσα περιοχή: char c \u003d 120. Σε αυτή την περίπτωση, η τιμή της μεταβλητής C θα είναι ο χαρακτήρας που έχει κωδικό 120 στον πίνακα συμβόλων ASCII.

Θα πρέπει να ληφθεί υπόψη ότι για την έξοδο της κονσόλας συμβόλων του WARS_T, δεν είναι απαραίτητο να χρησιμοποιήσετε το STD :: Cout και το STD :: WCOUT Stream:

#Περιλαμβάνω. int main () (char a \u003d h ", warch_t b \u003d" e "; std :: wcout<< a << b << "\n"; return 0; }

Ταυτόχρονα, η ροή του STD :: WCOUT μπορεί να λειτουργήσει με Char και Warrar_T. Και το Std :: Cout Stream για τη μεταβλητή WARS_T θα εμφανίσει τον αριθμητικό κώδικα αντί του συμβόλου.

Στο πρότυπο C ++ 11, προστίθενται τύποι Char16_T και Char32_T, οι οποίες επικεντρώνονται στη χρήση Unicode. Ωστόσο, στο επίπεδο του λειτουργικού συστήματος, τα ρέματα δεν εφαρμόζονται για να συνεργαστούν με αυτούς τους τύπους. Επομένως, εάν θέλετε να εμφανίσετε τις τιμές αυτών των τύπων στην κονσόλα, πρέπει να μετατρέψετε μεταβλητές σε τύπους char ή warch_t:

#Περιλαμβάνω. int main () (char a \u003d h "; warch_t b \u003d" e "; char16_t c \u003d" l "; char32_t d \u003d" o "; std :: cout<< a << (char)b << (char)c << (char)d << "\n"; return 0; }

Σε αυτή την περίπτωση, όταν εμφανίζονται πριν από τις μεταβλητές, ο τύπος char- (τύπος char τύπου υποδεικνύεται, λόγω της οποίας οι τιμές των μεταβλητών B, C και D μετατρέπονται στον τύπο char και μπορούν να εμφανιστούν στην κονσόλα χρησιμοποιώντας το STD χρησιμοποιώντας το STD :: Stream Cout.

Έξυπνοι τύποι

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

Σύντομη Α \u003d -10; μη υπογεγραμμένο σύντομο b \u003d 10; int c \u003d -30; μη υπογραφεί int d \u003d 60; Μακρύ e \u003d -170; μη υπογεγραμμένο μακρύ f \u003d 45; Μακρύ g \u003d 89;

Τύποι αριθμών πλωτή

Τύποι αριθμών πλωτών σημείων IILI κλασματικοί αριθμοί αντιπροσωπεύονται από τέτοιους τύπους ως πλωτήρες, διπλό και μακρύ διπλό:

Float a \u003d -10.45; Διπλό Β \u003d 0.00105; Μακρύ διπλό C \u003d 30.890045;

Τύποι δεδομένων

Στην παραπάνω λίστα, το μέγεθος που λαμβάνει στη μνήμη καθορίζεται για κάθε τύπο. Ωστόσο, αξίζει να σημειωθεί ότι τα μεγέθη ορίων για τους τύπους προγραμματιστών μεταγλωτττών μπορούν να επιλέξουν ανεξάρτητα, με βάση τις δυνατότητες υλικού του υπολογιστή. Το πρότυπο καθορίζει μόνο τις ελάχιστες τιμές που πρέπει να είναι. Για παράδειγμα, για τους τύπους Int και Short, η ελάχιστη τιμή είναι 16 bits, για μεγάλους τύπους 32 bits, για μεγάλο διπλό τύπο. Ταυτόχρονα, το μέγεθος του μεγάλου τύπου δεν πρέπει να είναι μικρότερο από τον τύπο τύπου int και το μέγεθος του τύπου int δεν είναι μικρότερο από το μέγεθος του τύπου βραχυπρόθεσμα και το μέγεθος του μεγάλου διπλού τύπου πρέπει να είναι Περισσότερο διπλό. Για παράδειγμα, ο μεταγλωττιστής G ++ κάτω από τα Windows για Long Double χρησιμοποιεί 12 bytes και ο μεταγλωττιστής ενσωματωμένος στο Visual Studio και επίσης λειτουργεί κάτω από τα Windows για μεγάλες διπλές χρήσεις 8 byte. Δηλαδή, ακόμη και εντός της ίδιας πλατφόρμας, οι διαφορετικοί μεταγλωττιστές μπορούν να προσεγγίσουν το μέγεθος ορισμένων τύπων δεδομένων με διαφορετικούς τρόπους. Αλλά γενικά, οι διαστάσεις αυτές χρησιμοποιούνται παραπάνω κατά την περιγραφή των τύπων δεδομένων.

Ωστόσο, υπάρχουν καταστάσεις όταν πρέπει να γνωρίζετε ακριβώς το μέγεθος ενός συγκεκριμένου τύπου. Και για αυτό, στο C ++ υπάρχει ένας χειριστής μεγέθους () που επιστρέφει το μέγεθος μνήμης σε bytes που η μεταβλητή παίρνει:

#Περιλαμβάνω. Int Main () (μακρύ διπλός αριθμός \u003d 2; STD :: Cout<< "sizeof(number) =" << sizeof(number); return 0; }

Συμπέρασμα κονσόλας κατά την κατάρτιση στο G ++:

Μέγεθος (αριθμός) \u003d 12

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

Μη υπογεγραμμένος σύντομος αριθμός \u003d -65535;

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

Στο οπτικό στούντιο, η συλλογή μπορεί να περάσει χωρίς σφάλματα, ωστόσο, ο μεταβλητός αριθμός θα λάβει τιμή 2 - το αποτέλεσμα της μετατροπής του αριθμού -65535 στον μη υπογεγραμμένο σύντομο τύπο. Δηλαδή, και πάλι, το αποτέλεσμα δεν θα είναι ακριβώς αυτό που αναμένεται. Η τιμή της μεταβλητής είναι απλά ένα σύνολο bits στη μνήμη, τα οποία ερμηνεύονται σύμφωνα με έναν συγκεκριμένο τύπο. Και για διαφορετικούς τύπους, το ίδιο σύνολο bits μπορεί να ερμηνευτεί με διαφορετικούς τρόπους. Ως εκ τούτου, είναι σημαντικό να ληφθούν υπόψη οι σειρές τιμών για το ένα ή το άλλο όταν αντιστοιχούν μια μεταβλητή τιμή.

Προσδιορισμός αυτοκινήτου

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

Αριθμός αυτόματου αριθμού \u003d 5;

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

Συνεχίζοντας το θέμα:
συσκευές

Γνωρίστε το online παιχνίδι Invaders Galaxy (Galaxy Invaders) - η σύγχρονη εκδοχή του καλύτερου παιχνιδιού ρετρό του είδους του Space Invaders (Space Invaders). Αυτό είναι ένα παλιό καλό ...