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

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

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

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

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

1
2
3
4
5
6
7
8
#include <stdio.h>

	int main() {
	   int x; /* δήλωση μεταβλητής με το όνομα x και τύπο int */
	   x = 100; /* καταχώρηση τιμής στη μεταβλητή x */
	   printf("%d", x);  /* εκτύπωση της μεταβλητής x, προσέξτε τη σύνταξη */
	   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 <stdio.h>

	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 */
	   printf("%d\n", c);  /* εκτύπωση της μεταβλητής c */
	   printf("%d\n", x);  /* εκτύπωση της μεταβλητής x */
	   printf("%f\n", y);  /* εκτύπωση της μεταβλητής y */
	   printf("%f\n", z);  /* εκτύπωση της μεταβλητής z */
	   return 0;
	}

Η εντολή sizeof

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

#include <stdio.h>

	int main() {
	   int bytes;

	   bytes = sizeof(char);
	   printf("%d\n", bytes);
	   bytes = sizeof(int);
	   printf("%d\n", bytes);
	   bytes = sizeof(float);
	   printf("%d\n", bytes);
	   bytes = sizeof(double);
	   printf("%d\n", bytes);

	   return 0;
	}

Ο τύπος void

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

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