Τροποποιητές τύπου C ++: κοντός, μακρύς, υπογεγραμμένος και χωρίς υπογραφή

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

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

Υπάρχουν τέσσερις τροποποιητές τύπου στο C ++.

  • short
  • long
  • signed
  • unsigned

Ακολουθεί μια σύντομη περίληψη:

Τύπος δεδομένων Μέγεθος (σε Bytes) Εννοια
signed int 4 χρησιμοποιείται για ακέραιους αριθμούς (ισοδύναμο με int)
unsigned int 4 μπορεί να αποθηκεύσει μόνο μη αρνητικούς ακέραιους αριθμούς
short 2 χρησιμοποιείται για μικρούς ακέραιους αριθμούς (εύρος -32768 έως 32767 )
long τουλάχιστον 4 χρησιμοποιείται για μεγάλους ακέραιους (ισοδύναμο με long int)
unsigned long 4 χρησιμοποιείται για μεγάλους θετικούς ακέραιους ή 0 (ισοδύναμο με unsigned long int)
long long 8 χρησιμοποιείται για πολύ μεγάλους ακέραιους (ισοδύναμο με long long int).
unsigned long long 8 χρησιμοποιείται για πολύ μεγάλους θετικούς ακέραιους ή 0 (ισοδύναμο με unsigned long long int)
long double 8 χρησιμοποιείται για μεγάλους αριθμούς κινητής υποδιαστολής
signed char 1 χρησιμοποιείται για χαρακτήρες (εγγυημένη περιοχή -127 έως 127 )
unsigned char 1 χρησιμοποιείται για χαρακτήρες (εύρος 0 έως 255 )

τροποποιητής μικρού τύπου

Μπορούμε να χρησιμοποιήσουμε shortγια μικρούς ακέραιους αριθμούς (στην περιοχή −32,767έως +32,767).

Για παράδειγμα,

 // small integer short a = 12345;

Εδώ, το a είναι μια shortακέραια μεταβλητή.

Σημείωση: short ισοδυναμεί με short int.

μακρύς τροποποιητής τύπου

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

 // large integer long b = 123456;

Σημείωση: long ισοδυναμεί με long int.

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

 // large floating-point number long double c = 0.333333333333333333L;

Σημείωση: Για να υποδείξουμε long double, χρησιμοποιούμε το Lεπίθημα. Εάν δεν χρησιμοποιήσουμε το επίθημα L, είναι μια doubleτιμή που μετατρέπεται σε long double(η οποία μπορεί να οδηγήσει σε απώλεια δεδομένων).

πολύ καιρό

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

Για παράδειγμα,

 // long long int long long num = 12345678;

υπογεγραμμένοι και μη υπογεγραμμένοι τροποποιητές

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

 // positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;

Εδώ,

  • Το x κρατά έναν ακέραιο θετικής αξίας
  • y κρατά έναν ακέραιο αρνητικό
  • Το z κρατά έναν ακέραιο μηδενικής αξίας

Σημείωση:

  • Από προεπιλογή, οι ακέραιοι είναι signed. Ως εκ τούτου αντί για signed int, μπορούμε να χρησιμοποιήσουμε άμεσα int.
  • signed και χωρίς υπογραφή μπορεί να χρησιμοποιηθεί μόνο με τύπους int και char.

Οι μη υπογεγραμμένες μεταβλητές μπορούν να διατηρούν μόνο μη αρνητικές ακέραιες τιμές. Για παράδειγμα,

 // positive valued integer unsigned int x = 2; unsigned int y = 0;

Εδώ,

  • Το x κρατά έναν ακέραιο θετικής αξίας
  • y κρατάει μηδέν

Γενικά, μια intμεταβλητή μπορεί να αποθηκεύσει ένα εύρος τιμών από -2.147.483.648 έως 2.147.483.647 . Ενώ, μια unsigned inμεταβλητή t μπορεί να αποθηκεύσει ένα εύρος τιμών από 0 έως 4.294.967.295 .

υπογεγραμμένο, χωρίς υπογραφή και απλό char

C ++ διαθέτει 3 διαφορετικούς τύπους char: char, signed charκαι unsigned char. Στην πράξη, υπάρχουν βασικά μόνο 2 τύποι: signed charκαι unsigned char.

Αυτό συμβαίνει επειδή παρόλο που charδεν είναι το ίδιο signed charή unsigned charστο πρότυπο C ++, διαφορετικοί μεταγλωττιστές αντιμετωπίζουν charείτε είτε signed charείτε unsigned charανάλογα με τις προτιμήσεις τους.

Σημείωση: Όταν χρησιμοποιούμε μόνο charαντί για signed charή unsigned char, αυτός ο τύπος είναι γνωστός ως απλός χαρακτήρας .

Όπως ίσως μαντέψατε, signed charμπορείτε να αποθηκεύσετε τόσο θετικούς όσο και αρνητικούς ακέραιους, ενώ unsigned charμπορείτε να αποθηκεύσετε μόνο θετικούς ακέραιους (συμπεριλαμβανομένου του 0 )

Η εγγυημένη εύρος των ακέραιες τιμές signed charμπορεί να αποθηκεύσει είναι -127 - 127 , ενώ το εύρος της unsigned charείναι 0 έως 255 .

 // plain char char plain_1 = 65; char plain_2 = 0; // plain char with negative value // might cause problems with some compilers char plain_3 = -56; // signed char signed char sin_1 = 12; signed char sin_2 = 0; signed char sin_3 = -12; // unsigned char unsigned char unsin_1 = -85; unsigned char unsin_2 = 0;

Εδώ,

  • Το plain_1 κρατά έναν ακέραιο θετικής αξίας
  • Το plain_2 κρατά έναν ακέραιο μηδενικής αξίας
  • Το sin_1 κρατά έναν ακέραιο θετικής αξίας
  • Το sin_2 κρατά έναν ακέραιο μηδενικής αξίας
  • Το sin_3 κρατά έναν ακέραιο αρνητικό
  • Το unsin_1 κρατά έναν ακέραιο αρνητικό
  • Το unsin_2 κρατά έναν ακέραιο μηδενικής αξίας

Σημείωση: Είναι προτιμότερο να μην χρησιμοποιείτε απλό char για την εκτέλεση αριθμητικών χειρισμών. αντί για υπογεγραμμένο ή μη υπογεγραμμένο char πρέπει να χρησιμοποιηθεί για αυτό. Ο απλός χαρακτήρας πρέπει να χρησιμοποιείται μόνο για την αποθήκευση τιμών χαρακτήρων.

ενδιαφέροντα άρθρα...