Οι τελεστές χρησιμοποιούνται
για απόδοση τιμής, σύγκριση, αριθμητικές και λογικές πράξεις. Οι κυριότεροι
τελεστές που χρησιμοποιούμε είναι οι εξής:
=, -, +, *,
/, %, <, >, !, ~, &, |, ^, +=, -=, *=,
/=, %=, ==, >=, <=, --, ++, //, <<, >>, !=,
&&, ||
Οι αριθμητικοί τελεστές =, -, +, *, /,
% χρησιμοποιούνται για αριθμητικές
πράξεις μεταξύ τελεστέων (καταχωρητών – μεταβλητών – σταθερών). Με τη σειρά που
αναφέρονται είναι οι αριθμητικές πράξεις ισότητας, αφαίρεσης, πρόσθεσης,
πολλαπλασιασμού, διαίρεσης και υπόλοιπου διαίρεσης.
i1 = 0; // i1 will be i1=0
i1 = i2 + i3; // i2=45, i3=10,
then i1 will be i1=55
i1 = i1 + 6; // Initially i1=55, then i1 will be i1=61
i1 += 6; // Initially i1=55, then i1 will be i1=61
Στο πρώτο από τα παραπάνω παραδείγματα η μεταβλητή i1 παίρνει τιμή 0, στο δεύτερο η
μεταβλητή i1 παίρνει την τιμή
του αθροίσματος των i2 και i3, στο τρίτο και στο τέταρτο η i1 παίρνει την τιμή που προκύπτει από το άθροισμα της
τιμής που είχε αρχικά με το 6. Μολονότι δίνουν το ίδιο αποτέλεσμα και οι δύο
τρόποι σύνταξης, ο τελευταίος είναι προτιμότερος γιατί μπορεί να βοηθήσει τον compiler να παράγει
αποτελεσματικότερο κώδικα. Οι τελεστές +=, -=, *=, /=,
%= ονομάζονται τελεστές αντικατάστασης.
Κατά τη διαίρεση ως αποτέλεσμα λαμβάνουμε
μόνο το ακέραιο μέρος, για το υπόλοιπο πρέπει να εκτελέσουμε την πράξη του
υπολοίπου διαίρεσης:
i1 = i2 / i3; // i2=45, i3=10,
then i1 will be i1=4
i1 = i2 % i3; // i2=45, i3=10,
then i1 will be i1=5
i1 %= 6; // Initially i1=55, then i1 will be i1=1
Στις αριθμητικές πράξεις μπορούμε να
συμπεριλάβουμε τη μοναδιαία αύξηση i1++ ή ++i1 και τη μοναδιαία
ελάττωση i1-- ή --i1 όπου η μεταβλητή
αυξάνει ή ελαττώνει την τιμή της αντίστοιχα. Η διαφορά της χρήσης του τελεστή
αύξησης ++ ή ελάττωσης - - μετά ή πριν το όνομα της μεταβλητής
είναι ότι, όταν βρίσκεται μετά, χρησιμοποιείται πρώτα η τρέχουσα τιμή της
μεταβλητής στη συνθήκη που εμφανίζεται και μετά αυξάνει η μεταβλητή, ενώ όταν
βρίσκεται πριν, αυξάνει πρώτα η μεταβλητή και μετά χρησιμοποιείται η τιμή της
στη συνθήκη.
Οι τελεστές σύγκρισης >, <,
>=, <=, χρησιμοποιούνται, όπως ορίζεται από το σύμβολο, για
σύγκριση αριθμητικών τιμών μεταξύ τελεστέων (καταχωρητών – μεταβλητών –
σταθερών) και επιστρέφουν Αληθές ή Ψευδές[1]
στη συνθήκη που χρησιμοποιούνται:
if (i1 >= 4) { /* Your code here */ }
Στο παραπάνω
παράδειγμα θα εκτελεστεί ο κώδικας που βρίσκεται μέσα στις αγκύλες αν η συνθήκη
στην παρένθεση είναι Αληθής, δηλαδή η i1 είναι μεγαλύτερη ή ίση του 4.
Με παρόμοιο τρόπο λειτουργούν οι
τελεστές σύγκρισης == και != όπου ο πρώτος χρησιμοποιείται για το
ίσο και ο δεύτερος για το διάφορο:
if (i1 == 4) { /* Your code here */ }
Στο παραπάνω
παράδειγμα θα εκτελεστεί ο κώδικας που βρίσκεται μέσα στις αγκύλες αν η i1
είναι ίση του 4.
Οι λογικοί τελεστές &,
|, ^, ~, <<, >>,
χρησιμοποιούνται για λογικές πράξεις με bit μεταξύ
τελεστέων (καταχωρητών – μεταβλητών – σταθερών). Με τη σειρά που αναφέρονται
είναι οι λογικές πράξεις AND, OR,
XOR, συμπλήρωμα ως προς 1, αριστερή ολίσθηση και δεξιά ολίσθηση[2]:
i1 = i2 & i3; // i2=0b00101101, i3=0b00001010,
then i1 will be i1=0b00001000
i1 = i2 | i3; // i2=0b00101101, i3=0b00001010,
then i1 will be i1=0b00101111
i1 = i3 << 4; // i3=0b00001010, then i1 will be i1=0b10100000
i1 = ~i3; // i3=0b00001010, then
i1 will be i1=0b11110101
Το συμπλήρωμα ως προς 1 μπορεί να χρησιμοποιηθεί και
στον ίδιο τον τελεστή:
i1 = ~i1; // Initially i1=0b00110110,
then i1 will be i1=0b11001001
Στις λογικές πράξεις με bit μεταξύ τελεστέων
μπορούμε να χρησιμοποιήσουμε επίσης τελεστές αντικατάστασης &=, |=,
^=, <<=, >>=
i1 &= 0b00001010; // Initially i1=0b00110110, then i1 will be i1=0b00000010
τους οποίους
και σε αυτή την περίπτωση είναι προτιμότερο να χρησιμοποιούμε αντί της πιο
ανεπτυγμένης μορφής:
i1 = (i1 & 0b00001010);
Οι λογικοί τελεστές &&,
||, !, χρησιμοποιούνται για λογικές πράξεις μεταξύ των
καταστάσεων Αληθούς ή Ψευδούς των συνθηκών κάποιου γενικότερου όρου. Με τη
σειρά που αναφέρονται είναι οι λογικές πράξεις: AND, OR, NOT. Επιστρέφουν και αυτές με τη
σειρά τους κατάσταση αληθούς ή ψευδούς.
if ((i1 == 0xA0) && (i2 == 0xB0) &&
(i3 == 0xC0)) { /* Your code here */ }
if (!((i1 == 0xA0) && (i2 == 0xB0) && (i3 == 0xC0)))
{ /* Your code here */ }
Στο πρώτο από τα παραπάνω παραδείγματα θα
εκτελεστεί ο κώδικας που βρίσκεται μέσα στις αγκύλες αν ισχύουν και οι 3
συνθήκες της παρένθεσης, δηλαδή i1=A0,
i2=B0 και i3=C0. Αυτό ερμηνεύεται ως εξής:
κάθε μια συνθήκη όταν ισχύει επιστρέφει Αληθές, το AND
Αληθών είναι και αυτό Αληθές συνεπώς ο όρος της παρένθεσης στην if καθίσταται Αληθής και η εντολή
εκτελείται. Στο δεύτερο παράδειγμα ο κώδικας θα εκτελείται πάντα εκτός από την
περίπτωση που θα ισχύσουν οι τρεις συνθήκες, γιατί το λογικό αποτέλεσμα των
τριών συνθηκών αντιστρέφεται.
©2016 Πορλιδάς Δημήτριος
|