====== Βασικοί τύποι δεδομένων ====== Οι βασικοί τύποι δεδομένων στη C++ είναι κατά βάση κοινοί με τους τύπους δεδομένων στη C, με κάποιες επεκτάσεις. * **Character types:** Αντιπροσωπεύουν μεμονωμένους χαρακτήρες ('Α' ή '!" ή '3'). Ο βασικός τύπος είναι ο **char** που καταλαμβάνει ένα byte, υπάρχουν όμως και τύποι χαρακτήρων που καταλαμβάνουν περίσσότερα bytes (δες παρακάτω). * **Integer types:** Ακέραιοι αριθμητικοί τύποι. * **Floating-point types:** Τύποι δεδομένων κινητής υποδιαστολής. * **Boolean type:** τύπος bοοlean που λαμβάνει δύο λογικές τιμές, **true** ή **false**. ^ Group ^ Type names ^ Notes on size & precision ^ |**Character types** |**char** | Exactly one byte in size. At least 8 bits.| |::: |**char16_t** | Not smaller than char. At least 16 bits. | |::: |**char32_t** | Not smaller than char16_t. At least 32 bits. | |::: |**wchar_t** | Can represent the largest supported character set. | |**Integer types (signed)** | **char** |Same size as char. At least 8 bits. | |::: |**signed short int** |Not smaller than char. At least 16 bits. | |::: |**signed int** |Not smaller than short. At least 16 bits. | |::: |**signed long int** |Not smaller than int. At least 32 bits.| |::: |**signed long long int** | Not smaller than long. At least 64 bits. | |**Integer types (unsigned)** | **unsigned char** | (same size as their signed counterparts) | |::: |**unsigned short int** |::: | |::: |**unsigned int** | ::: | |::: |**unsigned long int** |::: | |::: |**unsigned long long int** |::: | |**Floating-point types** | **float** | | |::: | **double** |Precision not less than float | |::: |**long double** | Precision not less than double | |**Boolean type** | **bool** | | |**Void type** | **void** |no storage | |**Null pointer** | **decltype(nullptr)** | | Σημειώστε με βάση τον παραπάνω πίνακα ότι με εξαίρεση των τύπο **char** όλοι οι άλλοι βασικοί τύποι δεδομένων δεν καταλαμβάνουν συγκεκριμένο μέγεθος bytes στη μνήμη, αλλά προσδιορίζονται με βάση ένα ελάχιστο συνήθως μέγεθος. Αυτό δεν σημαίνει ότι οι συγκεκριμένοι τύποι δεδομένων δεν έχουν συγκεκριμένο μέγεθος αλλά ότι το μέγεθος αυτό μπορεί να διαφέρει από μηχανή σε μηχανή. ===== Δήλωση και αρχικοποίηση μεταβλητών ===== Οι μεταβλητές είναι δυνατόν να αρχικοποιηθούν με τους παρακάτω τρεις τρόπους: int x=100; int x(100); int x{100}; #include using namespace std; int main () { int a=5; // initial value: 5 int b(3); // initial value: 3 int c{2}; // initial value: 2 a = a + b; cout << "a: " << a << endl; // endl stands for newline b = a - c; cout << "b: " << b << endl; return 0; } ===== Αυτόματη εξαγωγή τύπου δεδομένων ===== Όταν μία μεταβλητή δηλώνεται ο μεταγλωττιστής μπορεί να προσδιορίσει τον τύπο της από τον τύπο της τιμής που ανατίθεται σε αυτή. Σε αυτή τη περίπτωση αρκεί ο τύπος της μεταβλητής να δηλωθεί ως **auto**, όπως στο παρακάτω παράδειγμα. #include using namespace std; int main () { int a{5}; // initial value: 5, sizeof int long b(3); // initial value: 3 sizeof long auto result = a + b; // compiler automatically extracts the variable type. cout << "sizeof(result): " << sizeof(result) << endl; cout << "sizeof(int): " << sizeof(int) << endl; cout << "sizeof(long): " << sizeof(long) << endl; return 0; } Επίσης, εάν μία μεταβλητή δεν αρχικοποιείται μπορείτε να δηλώσετε ότι είναι ιδίου τύπου με μία άλλη μεταβλητή ως εξής; #include using namespace std; int main () { int a{5}; // initial value: 5 long b(3); // initial value: 3 decltype(b) result; cout << "sizeof(result): " << sizeof(result) << endl; cout << "sizeof(int): " << sizeof(int) << endl; cout << "sizeof(long): " << sizeof(long) << endl; return 0; }