Σε αυτό το σεμινάριο, θα μάθουμε για τα βασικά της μετατροπής τύπου C ++ με τη βοήθεια παραδειγμάτων.
Το C ++ μας επιτρέπει να μετατρέπουμε δεδομένα ενός τύπου σε αυτόν ενός άλλου. Αυτό είναι γνωστό ως μετατροπή τύπου.
Υπάρχουν δύο τύποι μετατροπής τύπου στο C ++.
- Σιωπηρή μετατροπή
- Άμεση μετατροπή (επίσης γνωστή ως τύπος μετάδοσης)
Σιωπηρή μετατροπή τύπου
Η μετατροπή τύπου που γίνεται αυτόματα από τον μεταγλωττιστή είναι γνωστή ως σιωπηρή μετατροπή τύπου. Αυτός ο τύπος μετατροπής είναι επίσης γνωστός ως αυτόματη μετατροπή.
Ας δούμε δύο παραδείγματα σιωπηρής μετατροπής τύπου.
Παράδειγμα 1: Μετατροπή από int σε διπλό
// Working of implicit type-conversion #include using namespace std; int main() ( // assigning an int value to num_int int num_int = 9; // declaring a double type variable double num_double; // implicit conversion // assigning int value to a double variable num_double = num_int; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )
Παραγωγή
num_int = 9 num_double = 9
Στο πρόγραμμα, έχουμε εκχωρήσει int
δεδομένα σε μια double
μεταβλητή.
num_double = num_int;
Εδώ, η int
τιμή μετατρέπεται αυτόματα double
από τον μεταγλωττιστή πριν εκχωρηθεί στη μεταβλητή num_double. Αυτό είναι ένα παράδειγμα σιωπηρής μετατροπής τύπου.
Παράδειγμα 2: Αυτόματη μετατροπή από διπλό σε int
//Working of Implicit type-conversion #include using namespace std; int main() ( int num_int; double num_double = 9.99; // implicit conversion // assigning a double value to an int variable num_int = num_double; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )
Παραγωγή
num_int = 9 num_double = 9,99
Στο πρόγραμμα, έχουμε εκχωρήσει double
δεδομένα σε μια int
μεταβλητή.
num_double = num_int;
Εδώ, η double
τιμή μετατρέπεται αυτόματα int
από τον μεταγλωττιστή πριν εκχωρηθεί στη μεταβλητή αριθ. Αυτό είναι επίσης ένα παράδειγμα σιωπηρής μετατροπής τύπου.
Σημείωση: Δεδομένου ότι int
δεν μπορεί να έχει δεκαδικό μέρος, τα ψηφία μετά το δεκαδικό σημείο περικόπτονται στο παραπάνω παράδειγμα.
Απώλεια δεδομένων κατά τη μετατροπή (Περιορισμένη μετατροπή)
Όπως έχουμε δει από το παραπάνω παράδειγμα, η μετατροπή από έναν τύπο δεδομένων σε έναν άλλο είναι επιρρεπής σε απώλεια δεδομένων. Αυτό συμβαίνει όταν δεδομένα μεγαλύτερου τύπου μετατρέπονται σε δεδομένα μικρότερου τύπου.

Άμεση μετατροπή C ++
Όταν ο χρήστης αλλάζει μη αυτόματα δεδομένα από έναν τύπο σε έναν άλλο, αυτό είναι γνωστό ως ρητή μετατροπή . Αυτός ο τύπος μετατροπής είναι επίσης γνωστός ως τύπος μετάδοσης .
Υπάρχουν τρεις βασικοί τρόποι με τους οποίους μπορούμε να χρησιμοποιήσουμε ρητή μετατροπή στο C ++. Αυτοί είναι:
- Χύτευση τύπου τύπου C (επίσης γνωστή ως συμβολική παράσταση )
- Σημείωση λειτουργίας (επίσης γνωστή ως παλιά χύτευση τύπου στυλ C ++ )
- Τύπος τελεστές μετατροπής
Casting τύπου τύπου C
Όπως υποδηλώνει το όνομα, αυτό το είδος της χύτευσης ευνοείται από τη γλώσσα προγραμματισμού C . Είναι επίσης γνωστό ως συμβολική παράσταση .
Η σύνταξη για αυτό το στυλ είναι:
(data_type)expression;
Για παράδειγμα,
// initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = (double)num_int;
Casting σε στυλ λειτουργίας
Μπορούμε επίσης να χρησιμοποιήσουμε τη λειτουργία όπως σημειογραφία για να μεταδώσουμε δεδομένα από τον ένα τύπο στον άλλο.
Η σύνταξη για αυτό το στυλ είναι:
data_type(expression);
Για παράδειγμα,
// initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = double(num_int);
Παράδειγμα 3: Τύπος μετάδοσης
#include using namespace std; int main() ( // initializing a double variable double num_double = 3.56; cout << "num_double = " << num_double << endl; // C-style conversion from double to int int num_int1 = (int)num_double; cout << "num_int1 = " << num_int1 << endl; // function-style conversion from double to int int num_int2 = int(num_double); cout << "num_int2 = " << num_int2 << endl; return 0; )
Παραγωγή
num_double = 3,56 num_int1 = 3 num_int2 = 3
Χρησιμοποιήσαμε τόσο τη μετατροπή τύπου τύπου C όσο και τη μετάδοση τύπου λειτουργίας για μετατροπή τύπου και εμφανίσαμε τα αποτελέσματα. Δεδομένου ότι εκτελούν την ίδια εργασία, και οι δύο μας δίνουν την ίδια έξοδο.
Τύπος χειριστές μετατροπής
Εκτός από αυτούς τους δύο τύπους χύτευσης, το C ++ διαθέτει επίσης τέσσερις τελεστές για μετατροπή τύπου. Είναι γνωστοί ως τελεστές μετατροπής τύπου . Αυτοί είναι:
static_cast
dynamic_cast
const_cast
reinterpret_cast
Θα μάθουμε για αυτά τα καστ σε μεταγενέστερα σεμινάρια.
Προτεινόμενα σεμινάρια:
- Συμβολοσειρά C ++ στο int και το αντίστροφο
- C ++ string για float, double και αντίστροφα