Προγραμματισμός Ι (HY120)

Σχετικά έγγραφα
Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Διαδικασιακός Προγραμματισμός

Ανάπτυξη και Σχεδίαση Λογισμικού

a = 10; a = k; int a,b,c; a = b = c = 10;

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Στοιχειώδης προγραμματισμός σε C++

Βασικά στοιχεία της Java

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Εισαγωγή στη γλώσσα προγραμματισμού C++

Ανασκόπηση στα ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός I (Θ)

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

2.1. Εντολές Σχόλια Τύποι Δεδομένων

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Εισαγωγή στον Προγραμματισμό

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Τύποι δεδομένων, τελεστές, μεταβλητές

Προγραμματισμός Ι (HY120)

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

Εισαγωγή στον Προγραμματισμό

Η γλώσσα προγραμματισμού C

8. Συνθήκες ελέγχου, λογικοί τελεστές

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 11

3. Εκφράσεις και έλεγχος ροής

Προγραμματισμός Ι (ΗΥ120)

5 &6. Τύποι δεδομένων, τελεστές και

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Δυαδικό Σύστημα Αρίθμησης

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Προγραμματισμός Ι. Θεματική ενότητα 3: Tελεστές. εκφράσεις

οµές Επιλογής Εντολές if και switch

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Εισαγωγή στην Επιστήμη των Υπολογιστών

Δεδομένα, τελεστές, είσοδος/έξοδος

Η γλώσσα προγραμματισμού C

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Προγραμματισμός Ι (HY120)

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage(

ιαδικαστικός Προγραμματισμός

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Ανάπτυξη και Σχεδίαση Λογισμικού

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Εισαγωγή στον Προγ/μό Υπολογιστών

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Η/Υ (ΤΛ2007 )

2. Δήλωση μεταβλητών. #include <avr/io.h> #include <util/delay.h> unsigned char i=0xa0; register unsigned char i asm("r3");

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 9 Ο. Διαχείριση αλφαριθμητικών και πράξεις σε επίπεδο bit ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΙΝΑΤΚΑΣ Ι.

Κατ οίκον Εργασία ΚE5

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

Ηλεκτρονικοί Υπολογιστές

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ

Προγραμματισμός Ι (HY120)

Βασικές Αρχές Προγραμματισμού

Αριθμητικά Συστήματα

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Transcript:

Προγραμματισμός Ι (HY120) #3 τελεστές 1 Σπύρος Λάλης

Τελεστής ανάθεσης Το σύμβολο της ανάθεσης είναι το = προσοχή: το σύμβολο ελέγχου ισότητας είναι το == Η μορφή των προτάσεων <όνομα> = <έκφραση> 1. Αποτιμάται η έκφραση στο δεξί μέρος. 2. Η τιμή που παράγεται αποθηκεύεται στην μεταβλητή το όνομα της οποίας δίνεται στο αριστερό μέρος. Η έκφραση μπορεί να συμπεριλαμβάνει μεταβλητές χρησιμοποείται η τρέχουσα τιμή της κάθε μεταβλητής Στο δεξί μέρος μπορεί να εμφανίζεται η ίδια μεταβλητή που εμφανίζεται και το αριστερό η μεταβλητή θα λάβει (κανονικά) την τιμή της έκφρασης 2 Σπύρος Λάλης

Η διπλή προσωπικότητα της ανάθεσης Η έκφραση ανάθεσης αποτελεί (η ίδια) ταυτόχρονα μια έκφραση αποτίμησης που επιστρέφει τιμή! Η τιμή που επιστρέφεται είναι η τιμή που ανατίθεται στην μεταβλητή που βρίσκεται στα αριστερά της έκφρασης η τιμή που παράγεται από την έκφραση στα δεξιά Μια έκφραση ανάθεσης μπορεί να χρησιμοποιηθεί ως τμήμα άλλων, πιο πολύπλοκων εκφράσεων π.χ. επιτρέπονται εκφράσεις «αλυσιδωτής» ανάθεσης τιμών (από δεξιά προς τα αριστερά), όπου όλες οι μεταβλητές παίρνουν την τιμή που εμφανίζεται στο δεξί μέρος 3 Σπύρος Λάλης

int i,j,k; i = 1; /* i γίνεται 1 */ j = 1+1; /* j γίνεται 2 */ k = i+j; /* k γίνεται 3 */ i = k = j; /* i,k γίνονται 2 */ j = (i=3) + k; /* i γίνεται 3, j γίνεται 5 */ i = i+1; /* i γίνεται 4 */ 4 Σπύρος Λάλης

Ιδιωματισμοί Πολλές φορές χρησιμοποιούμε την ανάθεση για να αλλάξουμε την τιμή μιας μεταβλητής σε σχέση με την παλιά τιμή της (ίδιας μεταβλητής) Για το πετύχουμε αυτό, γράφουμε <όνομα> = <όνομα><op><έκφραση> όπου <op> ένας τελεστής Το ίδιο αποτέλεσμα μπορεί να επιτευχθεί με χρήση του τελεστή <op>= της «σχετικής» ανάθεσης <όνομα> <op>= <έκφραση> Προσοχή στις προτεραιότητες: η έκφραση που εμφανίζεται στα δεξιά αποτιμάται προτού εφαρμοστεί ο τελεστής <op> 5 Σπύρος Λάλης

int i,j,k; i = 1; j = 2; i += 2; /* i γίνεται 3 */ j *= i+1; /* j γίνεται 8 */ k = (i+=j) + 1; /* i γίνεται 11, k γίνεται 12 */ 6 Σπύρος Λάλης

Και άλλοι ιδιωματισμοί Ειδική (αλλά συχνή) περίπτωση: αύξηση ή μείωση της τιμής μιας μεταβλητής κατά 1 Υποστηρίζεται μέσω των τελεστών ++ ή -- <όνομα>++ ή <όνομα>-- ++<όνομα> ή --<όνομα> Προσοχή στην τιμή που επιστρέφεται ως αποτέλεσμα της έκφρασης της ανάθεσης! Όταν ο τελεστής εμφανίζεται πριν το όνομα της μεταβλητής, επιστρέφεται η νέα τιμή της μεταβλητής Όταν ο τελεστής εμφανίζεται μετά το όνομα της μεταβλητής, επιστρέφεται η παλιά τιμή της μεταβλητής 7 Σπύρος Λάλης

int i,j,k; i = 0; i++; /* i γίνεται 1 */ j = i++; /* j γίνεται 1, i γίνεται 2 */ k = --j; /* k γίνεται 0, j γίνεται 0 */ i = (k++) + 1; /* i γίνεται 1, k γίνεται 1 */ i = (++k) + 1; /* i γίνεται 3, k γίνεται 2 */ 8 Σπύρος Λάλης

Προσοχή, προσοχή, προσοχή... Τα φαινόμενα, μερικές φορές, απατούν! int i; i = 0; i = (i++); i = 0; i = (++i); i = 0; i = (i=i+1); i = 0; i = (i++) + (i++); i = 0; i = (++i) + (++i); i = 0; i = (i=i+1) + (i=i+1); gcc 4.1.2 (SUSE) /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 2 */ /* i γίνεται 4 */ /* i γίνεται 4 */ gcc 3.4.2 (mingw32) /* i γίνεται 0 */ /* i γίνεται 1 */ /* i γίνεται 1 */ /* i γίνεται 2 */ /* i γίνεται 4 */ /* i γίνεται 3 */ 9 Σπύρος Λάλης

Αριθμητικοί τελεστές int / float / double + : πρόσθεση δύο τιμών - : αφαίρεση δύο τιμών * : πολλαπλασιασμός δύο τιμών / : διαίρεση δύο τιμών % : υπόλοιπο διαίρεσης δύο ακέραιων τιμών x = y*(x/y) + x%y, όμως δεν ισχύει πάντα η «μαθηματική» ιδιότητα του υπολοίπου (>=0), π.χ. όταν ο αριθμητής είναι αρνητικός: -5%4 ή -5%-4 Η αποτίμηση γίνεται από αριστερά προς τα δεξιά Τα '/' και '%' έχουν μεγαλύτερη προτεραιότητα αποτίμησης σε σχέση με τα '+' και '-' 10 Σπύρος Λάλης

Δυαδικοί τελεστές σε επίπεδο bits & ^ ~ : δυαδικό «and» : δυαδικό «or» : δυαδικό «xor» : δυαδικό «not» << : αριστερή ολίσθηση LSB (least significant bit) -> MSB (most significant bit) τα «λιγότερο σημαντικά» bits παίρνουν πάντα την τιμή 0 >> : δεξιά ολίσθηση MSB (most significant bit) -> LSB τα «περισσότερο σημαντικά» bits παίρνουν αναλόγως είτε την τιμή του περισσότερο σημαντικού bit (arithmetic shift) αν το όρισμα ερμηνεύεται ως signed, είτε 0 (logical shift) αν το όρισμα ερμηνεύεται ως unsigned 11 Σπύρος Λάλης

char a,b,c; unsigned char d; a = 0x61; /* a γίνεται 01100001 */ b = 0x62; /* b γίνεται 01100010 */ c = a b; /* c γίνεται 01100011 */ c = a&b; /* c γίνεται 01100000 */ c = a^b; /* c γίνεται 00000011 */ d = c = ~a; /* d,c γίνεται 10011110 */ d = d>>3; /* d γίνεται 00010011 */ c = c>>3; /* c γίνεται 11110011 */ 12 Σπύρος Λάλης

Γρήγορος πολλαπλασιασμός Με τον τελεστή ολίσθησης bits μπορούμε να υλοποιήσουμε γρήγορες πράξεις πολλαπλασιασμού και διαίρεσης με τιμές που είναι δυνάμεις του 2 v = v<<i; /* v = v*2i */ v = v>>i; /* v = v/2i */ Επίσης, μπορούμε να παράγουμε πολύ εύκολα (και γρήγορα) τιμές που είναι δυνάμεις του 2 v = 1<<i; /* v = 2i */ 13 Σπύρος Λάλης

short int i; i = 5; /* i γίνεται 00000000 00000101 (5) */ i = i<<4; /* i γίνεται 00000000 01010000 (5x2 4 =80) */ i = i>>2; /* i γίνεται 00000000 00010100 (80/2 2 =20) */ i = 1<<3; /* i γίνεται 00000000 00001000 (1x2 3 =8) */ i = 1<<8; /* i γίνεται 00000001 00000000 (1x2 8 =256) */ 14 Σπύρος Λάλης

Σχεσιακοί και λογικοί τελεστές ==,!= : ισότητα, ανισότητα >,>= <,<=! : μεγαλύτερο, μεγαλύτερο ίσο : μικρότερο, μικρότερο ίσο : λογική άρνηση Οι σχεσιακοί και λογικοί τελεστές χρησιμοποιούνται για την κατασκευή λογικών εκφράσεων (συνθηκών) Το αποτέλεσμα μιας λογικής έκφρασης είναι 0 ή 1 (για ψευδές ή αληθές) μπορεί να χρησιμοποιηθεί και ως ακέραιος κλασική πηγή λαθών στην C Η τιμή 0 ερμηνεύεται ως «ψευδές» (false) Οποιαδήποτε τιμή διάφορη 0, ως «αληθές» (true) 15 Σπύρος Λάλης

int a=1, b=2, c; c = (a == b); /* c γίνεται 0 */ c = (a!= b); /* c γίνεται 1 */ c = (a <= b); /* c γίνεται 1 */ c = ((c + a)!= b); /* c γίνεται 0 */ c = (!a ==!b); /* c γίνεται 1 */ c = (a!= b) +!(a == b); /* c γίνεται 2 */ c =!( (a!= b) +!(a == b) ); /* c γίνεται 0 */ 16 Σπύρος Λάλης

Λογικοί σύνδεσμοι : λογικό «ή» && : λογικό «και» Κατασκευή σύνθετων λογικών εκφράσεων Η αποτίμηση των λογικών εκφράσεων γίνεται από τα αριστερά προς τα δεξιά και...... μόνο όσο χρειάζεται για να διαπιστωθεί το τελικό αποτέλεσμα της έκφρασης (conditional evaluation) στο η αποτίμηση σταματά μόλις προκύψει «αληθές» το αποτέλεσμα είναι αναγκαστικά «αληθές» (1) στο && η αποτίμηση σταματά μόλις προκύψει «ψευδές» το αποτέλεσμα είναι αναγκαστικά «ψευδές» (0) Προσοχή στις παρενέργειες! 17 Σπύρος Λάλης

σημείο όπου σταματά η αποτίμηση της έκφρασης int a=1, b=0, c; c = a && b; /* c γίνεται 0 */ c = (a==1) (b==1); /* c γίνεται 1 */ c = (a++ > 1); /* c γίνεται 0, a γίνεται 2 */ c = b && (a++); /* c γίνεται 0, a μένει 2 */ c = (b++) && (a++); /* c γίνεται 0, b γίνεται 1, a μένει 2 */ c = (--b) (a++); /* c γίνεται 1, b γίνεται 0, a γίνεται 3 */ 18 Σπύρος Λάλης

Παρενέργειες Παρενέργεια: αλλαγή τιμής μιας μεταβλητής χωρίς αυτό να είναι (εύκολα) ορατό από τον κώδικα Η τεχνική αποτίμησης λογικών εκφράσεων μπορεί να οδηγήσει σε κώδικα με παρενέργειες Π.χ. <lexpr> && (a++) αλλάζει την τιμή της a μόνο όταν η <lexpr> αποτιμάται ως αληθής Δεν είναι εύκολο να εκτιμηθεί διαβάζοντας τον (υπόλοιπο) κώδικα Ο προγραμματισμός με παρενέργειες θεωρείται κακό στυλ γιατί οδηγεί σε δυσνόητο κώδικα και συχνά σε bugs που εντοπίζονται αρκετά δύσκολα 19 Σπύρος Λάλης

Υπόλοποι τελεστές <lexpr>?<expr1>:<expr2> : αποτιμά την έκφραση <lexpr> και εφόσον η τιμή της είναι διάφορη του 0 αποτιμά και επιστρέφει το αποτέλεσμα της έκφρασης <expr1>, διαφορετικά αποτιμά και επιστρέφει το αποτέλεσμα της έκφρασης <expr2> <expr1>,<expr2>,,<exprn> : αποτιμά τις εκφράσεις <expr1>, <expr2> μέχρι και <exprn>, από αριστερά προς τα δεξιά, και επιστρέφει το αποτέλεσμα της τελευταίας, δηλάδή της <exprn> int a = 1, b = 2, c, d; c = (a<b)? a : b; /* c γίνεται 1 */ d = (c=a,a=b,b=c,c=0); /* a,b,c,d γίνεται 2,1,0,0 */ 20 Σπύρος Λάλης

Σειρά αποτίμησης Προτεραιότητες μέγιστη ελάχιστη () []. ->! ~ ++ -- + - * & (cast) (ατομικοί) * / % + - << >> > >= < <= ==,!= & ^ &&? : = += -= *= /= %= &= = <<= >>=, 21 Σπύρος Λάλης