Τύποι δεδομένων (Data types)

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

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

Η αποθήκευση μιας αριθμητικής τιμής γίνεται με τη χρήση μιας μεταβλητής.

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

#include <iostream>
using namespace std;

int main() {
	int x; 
	x = 100; 
	cout << x << endl;

	return 0;
}

Ακέραιοι τύποι (Integer Types)

Στον παρακάτω πίνακα φαίνονται όλοι οι τύποι για ακέραιες τιμές.

Τύπος (Type) Αποθηκευτικός χώρος (Storage size) Εύρος τιμών (Value range)
char 1 byte -128 to 127 or 0 to 255
unsigned char 1 byte 0 to 255
signed char 1 byte -128 to 127
int 2 or 4 bytes -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int 2 or 4 bytes 0 to 65,535 or 0 to 4,294,967,295
short 2 bytes -32,768 to 32,767
unsigned short 2 bytes 0 to 65,535
long 4 bytes -2,147,483,648 to 2,147,483,647
unsigned long 4 bytes 0 to 4,294,967,295

Δεκαδικοί τύποι (Floating-Point Types)

Στον παρακάτω πίνακα φαίνονται όλοι οι τύποι για δεκαδικές τιμές.

Τύπος (Type) Αποθηκευτικός χώρος (Storage size) Εύρος τιμών (Value range) Ακρίβεια σε δεκαδικά ψηφία (Precision)
float 4 byte 1.2E-38 to 3.4E+38 6 decimal places
double 8 byte 2.3E-308 to 1.7E+308 15 decimal places
long double 10 byte 3.4E-4932 to 1.1E+4932 19 decimal places
#include <iostream>
using namespace std;

int main() {
	char c; /* δήλωση μεταβλητής με το όνομα c και τύπο char */
	int x; /* δήλωση μεταβλητής με το όνομα x και τύπο int */
	float y;
	double z;
	c = 96; /* καταχώρηση τιμής στη μεταβλητή c */
	x = 100; /* καταχώρηση τιμής στη μεταβλητή x */
	y = 4.0/3.0; /* καταχώρηση τιμής στη μεταβλητή y */
	z = 4.0/3.0; /* καταχώρηση τιμής στη μεταβλητή z */
	cout << c << endl;  /* εκτύπωση της μεταβλητής c */
	cout << x << endl;  /* εκτύπωση της μεταβλητής x */
	cout << y << endl;  /* εκτύπωση της μεταβλητής y */
	cout << z << endl;  /* εκτύπωση της μεταβλητής z */
	return 0;
}
96
100
1.333333
1.333333

Η εντολή sizeof

Με την εντολή sizeof μπορούμε να δούμε τον αριθμό σε bytes που δεσμεύει κάθε τύπος μεταβλητής.

#include <iostream>
using namespace std;

int main() {
	int bytes;
	
	bytes = sizeof(char);
	cout << bytes << endl;
	bytes = sizeof(int);
	cout << bytes << endl;
	bytes = sizeof(float);
	cout << bytes << endl;
	bytes = sizeof(double);
	cout << bytes << endl;

	return 0;
}
1
4
4
8

Τύπος δεδομένων string

Ο τύπος string δεν είναι ένας πρωταρχικός (primitive) τύπος αλλά ένα αντικείμενο (object). Μπορεί όμως να θεωρηθεί μεταβλητή και να χρησιμοποιηθεί ως τέτοια.

#include <iostream>
using namespace std;

int main() {
	
	string name = "Alexander";
	cout << name << endl;

	return 0;
}
Alexander

Για την εύρεση του μήκους (length) ενός string η συνάρτηση είναι: str.length(); όπου str ένα string.

Ο τύπος bool

Σε μεταβλητές τύπου bool η τιμή μπορεί να είναι true ή false.

#include <iostream>
using namespace std;

int main() {
	
	bool toggle = true;
	if(toggle) {
		cout << "It's on" << endl;
	} else {
		cout << "It's off" << endl;
	}

	return 0;
}
It's on

Τύπος enum (Enumerated Type)

Ο τύπος enum παίρνει τιμές από ένα σύνολο τιμών που έχουμε ορίσει με την εντολή enum.

#include <iostream>
using namespace std;

int main() {
	
	enum color {red, green, blue};
	color c = blue;

	cout << c << endl;
	return 0;
}
2

Η τιμή είναι 2 γιατί η αρίθμιση αρχίζει από το 0. (red=0, green=1, blue=2).

Στο παραπάνω παράδειγμα δεν μπορούμε να γράψουμε για παράδειγμα: color c = yellow;

Ο τύπος void

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

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