
Κάθε μεταβλητή στη C++ έχει έναν τύπο δεδομένων. Κάθε τύπος δεδομένων απαιτεί διαφορετική ποσότητα μνήμης και επιτρέπει συγκεκριμένες πράξεις που μπορούν να εκτελεστούν πάνω του. Ας τους περιγράψουμε συνοπτικά έναν προς έναν:
Ακολουθούν παραδείγματα μερικών πολύ συνηθισμένων τύπων δεδομένων που χρησιμοποιούνται στον προγραμματισμό Arduino:
byte
Ο τύπος byte αποθηκεύει μια αριθμητική τιμή 8-bit χωρίς δεκαδικά ψηφία. Το εύρος τιμών του είναι από 0 έως 255.
byte someVariable = 180; // δηλώνει τη μεταβλητή 'someVariable' ως τύπου byte
int
Οι ακέραιοι (integers) είναι ο βασικός τύπος δεδομένων για την αποθήκευση αριθμών χωρίς δεκαδικά ψηφία και αποθηκεύουν μια τιμή 16-bit με εύρος από 32.767 έως -32.768.
int someVariable = 1500; // δηλώνει τη μεταβλητή 'someVariable' ως τύπου ακέραιου
Σημείωση: Οι μεταβλητές τύπου integer “υπερχειλίζουν” (roll over) αν ξεπεράσουν τις μέγιστες ή ελάχιστες τιμές τους μέσω ανάθεσης ή σύγκρισης. Για παράδειγμα, αν x = 32767 και μια επόμενη εντολή προσθέσει 1 στο x (x = x + 1 ή x++), τότε το x θα υπερχειλίσει και θα γίνει -32.768.
long
Εκτεταμένος τύπος δεδομένων για μεγάλους ακέραιους αριθμούς χωρίς δεκαδικά ψηφία, αποθηκευμένους σε 32-bit, με εύρος από 2.147.483.647 έως -2.147.483.648.
long someVariable = 90000; // δηλώνει τη μεταβλητή 'someVariable' ως τύπου long
float
Τύπος δεδομένων για αριθμούς κινητής υποδιαστολής (floating-point), δηλαδή αριθμούς με δεκαδικά ψηφία. Οι αριθμοί κινητής υποδιαστολής έχουν μεγαλύτερη ακρίβεια από τους ακέραιους και αποθηκεύονται ως τιμή 32-bit με εύρος από 3.4028235E+38 έως -3.4028235E+38.
float someVariable = 3.14; // δηλώνει τη μεταβλητή 'someVariable' ως τύπου float
Σημείωση: Οι αριθμοί κινητής υποδιαστολής δεν είναι απόλυτα ακριβείς και μπορεί να δώσουν απροσδόκητα αποτελέσματα κατά τη σύγκριση. Επίσης, οι πράξεις με float είναι πολύ πιο αργές από τις πράξεις με ακέραιους, οπότε καλό είναι να αποφεύγονται όπου είναι δυνατόν.
arrays (πίνακες)
Ένας πίνακας είναι μια συλλογή τιμών στις οποίες έχουμε πρόσβαση μέσω ενός αριθμού δείκτη (index). Οποιαδήποτε τιμή του πίνακα μπορεί να χρησιμοποιηθεί καλώντας το όνομα του πίνακα και τον αριθμό δείκτη της τιμής. Οι πίνακες ξεκινούν από το μηδέν (zero indexed), δηλαδή η πρώτη τιμή βρίσκεται στη θέση με δείκτη 0. Ένας πίνακας πρέπει να δηλωθεί και προαιρετικά να αρχικοποιηθεί με τιμές πριν χρησιμοποιηθεί.
int myArray[] = {value0, value1, value2...}
int myArray[5]; // δηλώνει πίνακα ακεραίων με 6 θέσεις
myArray[3] = 10; // αναθέτει στην 4η θέση την τιμή 10
char
Τύπος δεδομένων που καταλαμβάνει 1 byte μνήμης και αποθηκεύει έναν χαρακτήρα. Οι σταθερές χαρακτήρων γράφονται με μονά εισαγωγικά, π.χ. ‘A’ (για πολλούς χαρακτήρες — συμβολοσειρές — χρησιμοποιούνται διπλά εισαγωγικά: “ABC”).
char myChar = 'A'; char myChar = 65; // και οι δύο δηλώσεις είναι ισοδύναμες
Σημείωση: Ο τύπος char είναι προσημασμένος (signed), πράγμα που σημαίνει ότι κωδικοποιεί αριθμούς από -128 έως 127. Για μη προσημασμένο τύπο δεδομένων 1 byte (8-bit), χρησιμοποιήστε τον τύπο byte.
