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

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

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Δομημένος Προγραμματισμός

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

Δομημένος Προγραμματισμός

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

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

Περιεχόμενα. Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6) Τύποι Δεδομένων. Τελεστές. Αριθμητικές εκφράσεις

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 4: Έλεγχος ροής Προτάσεις υπό συνθήκη διακλάδωσης

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

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

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

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

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

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

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

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στον δομημένο προγραμματισμό

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

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

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

9. Εντολές επανάληψηςκαι η εντολή

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομημένος Προγραμματισμός

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

Επανάληψη. Εντολές while, for, do-while

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Transcript:

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

Τελεστές (operators) Εκφράσεις (expressions) Σύμβολα ή λέξεις που αναπαριστούν συγκεκριμένες διεργασίες, οι οποίες εκτελούνται πάνω σε ένα ή περισσότερα δεδομένα. Τα δεδομένα καλούνται τελεστέοι (operands) και μπορούν να είναι μεταβλητές, σταθερές ή ακόμη και κλήσεις συναρτήσεων. Οι τελεστές χρησιμοποιούνται για το σχηματισμό εκφράσεων. Μία έκφραση, εν γένει, αποτελείται από έναν ή περισσότερους τελεστέους και προαιρετικά από έναν ή περισσότερους τελεστές. Κάθε έκφραση έχει μία τιμή, η οποία υπολογίζεται με ορισμένους κανόνες.

Σύμβολα συνηθισμένων τελεστών

Συμβολισμοί στο σχηματισμό εκφράσεων Ένας δυαδικός (binary) τελεστής μπορεί να τοποθετηθεί: Μεταξύ των δεδομένων στα οποία ενεργεί, όπως στην έκφραση x+y, οπότε έχουμε τη σημειογραφία ένθεσης ή ένθετου τελεστή (infix notation). Πριν από τους τελεστέους, όπως στην έκφραση +x y, y οπότε έχουμε τη σημειογραφία πρόθεσης ή προπορευόμενου τελεστή (prefix notation). Μετά από τους τελεστέους, όπως στην έκφραση x y+ x y+, οπότε έχουμε τη σημειογραφία επίθεσης ή παρελκόμενου τελεστή (postfix notation).

Προσοχή: Καλύτερη πρακτική: να μη χρησιμοποιούνται τελεστές σε μεικτούς τύπους: out_int = my1_int + my2_int; // καλό out_float = my_double / my_int; // κακό!!κινδυνοσ ΚΙΝΔΥΝΟΣ!!!!: Όταν γίνεται διαίρεση ακεραίων το αποτέλεσμα είναι το πηλίκο, δηλαδή 5 / 2 = 2 κι όχι 2.5 Για να ληφθεί ως αποτέλεσμα αριθμός κινητής υποδιαστολής, τουλάχιστον ένας από τους τελεστέους πρέπει να είναι αριθμός κινητής υποδιαστολής: 5.0 / 2 υπολογίζεται ως 2.5

Οι εκφράσεις είναι συχνά φωλιασμένες (nested): (((n+5)<=a) && q) H έκφραση αυτή Υπολογίζεται και γίνεται ένας όρος: (((n+5)<=a) && q) στη συνέχεια η έκφραση υπολογίζεται και γίνεται ένας όρος: (((n+5)<=a) && q)

Προτεραιότητα (precedence) και προσεταιριστικότητα (associativity) Πώς θα υπολογισθεί η έκφραση 17 * 8-2; Είναι 17*(8-2) ή (17*8)-2 ; Οι ανωτέρω εκφράσεις οδηγούν σε διαφορετικά αποτελέσματα. Κατά συνέπεια απαιτούνται κανόνες. Η σειρά εφαρμογής των τελεστών ονομάζεται εφαρμοστική σειρά (applicative order).

Προτεραιότητα και προσεταιριστικότητα τελεστών στη C

Προτεραιότητα και προσεταιριστικότητα Παραδείγματα: X =17-2 * 8 Aπάντηση: X=17-(2*8), X=1 Y = 17-2 - 8 Aπάντηση: Y = (17-2) 2)-8, Y=7 Z = 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 *2 + 1 (;) Μπερδευτήκατε; Τότε χρησιμοποιείστε παρενθέσεις στον κώδικά σας.

Τελεστές αύξησης και μείωσης Τελεστής αύξησης (increment operator): ++ Αντί για num = num + 1; γράφουμε num++; Τελεστής μείωσης (decrement operator): -- Αντί για Γράφουμε num = num - 1; num-- --; Μήπως γίνεται πλέον φανερό από πού έλαβε η C++ το όνομά της;

Παράδειγμα: Στην ακολουθία εκφράσεων που παρατίθεται ακολούθως παρουσιάζεται ενδεικτικά η λειτουργία των προπορευόμενων και παρελκόμενων τελεστών μοναδιαίας αύξησης και μείωσης.

Παράδειγμα: Να προσδιορισθεί η τιμή των x και z μετά την εκτέλεση κάθε μίας από τις παρακάτω προτάσεις, θεωρώντας ότι, πριν την εκτέλεση της κάθε πρότασης, οι τιμές των x και y είναι το 10 και 20 αντίστοιχα. α) z = ++x + y; β) z = --x x + y; γ) z = x++ + y; δ) z = x--x + y; Λύση: Στην περίπτωση του προπορευόμενου τελεστή, το σύστημα πρώτα εκτελεί την αύξηση ή μείωση και μετά χρησιμοποιεί τη νέα τιμή της μεταβλητής στον υπολογισμό της τιμής της έκφρασεις (προτάσεις α και β). Αντίθετα, στην περίπτωση του παρελκόμενου τελεστή το σύστημα πρώτα χρησιμοποιεί την τιμή της μεταβλητής για τον υπολογισμό της τιμής της έκφρασης και μετά εκτελεί την αύξηση ή μείωση της τιμής της μεταβλητής (προτάσεις γ και δ).

Αποτελέσματα: Προγραμματισμός Ι

Τελεστές ανάθεσης (assignment) x* = 10; εκτελεί την πράξη του πολλαπλασιασμού μεταξύ των x και 10 και εκχωρεί το αποτέλεσμα στο x. Αντιστοιχεί στην πρόταση x = x * 10; x* = y + 1; Αντιστοιχεί στην πρόταση x = x * (y + 1); κι ΟΧΙ στην πρόταση x = x * y + 1; Τελεστές ανάθεσης δημιουργούν κι οι τελεστές διαχείρισης δυαδικών ψηφίων (bitwise operators). Οι τελεστές αυτοί είναι: >>= <<= &= ^= =.

Τελεστές ανάθεσης (συνέχεια) Οι τελεστές ανάθεσης μαζί με τους τελεστές αύξησης/μείωσης γίνονται αιτία δημιουργίας παρενεργειών (side effects), για το λόγο αυτό αναφέρονται και ως παρενεργοί τελεστές (side effect operators). Οι παρενέργειες αυτές έχουν ως αποτέλεσμα την απροσδιόριστη συμπεριφορά του συστήματος ως προς τον τρόπο υπολογισμού της τιμής της μεταβλητής i σε εκφράσεις όπως: i = n[i++]; ή i = ++i + 1;

Συσχετιστικοί τελεστές (relational operators) Τελεστής < > <= >= ==!= Δράση Μικρότερο από Μεγαλύτερο από Μικρότερο ή ίσον από Μεγαλύτερο ή ίσον από Ίσο διάφορο Το αποτέλεσμα είναι πάντοτε είτε ΑΛΗΘΕΣ (ΤRUE) είτε ΨΕΥΔΕΣ (FALSE)

Συσχετιστικοί τελεστές Παράδειγμα: Η τιμή της έκφρασης (3 < 2) είναι ΨΕΥΔΗΣ Η τιμή της έκφρασης (2 = = 2) είναι ΑΛΗΘΗΣ Στη C (και σε πολλές άλλες γλώσσες), ΗτιμήΑΛΗΘΗΣ αντιστοιχεί στον ακέραιο 1 ΗτιμήΨΕΥΔΗΣ αντιστοιχεί στον ακέραιο 0

Συσχετιστικοί Αριθμητικοί Τελεστές: ΚΑΙ ΟΙ ΔΥΟ χρησιμοποιούν αριθμητικές εισόδους: Παράδειγμα: (num < 10) και (num + 10) (όπου num είναι μία ακέραια μεταβλητή) Ωστόσο, οι συσχετιστικές έξοδοι είναι μόνο TRUE/FALSE. (number < 10) δίνει TRUE ή FALSE (0/1) (number + 10) δίνει οποιοδήποτε αριθμό

Λογικοί τελεστές Διαφορετικοί από τους συσχετιστικούς τελεστές καθώς έχουν εισόδους True/False και εξόδους True/False. Τελεστής Δράση Πίνακας αληθείας &&! AND OR NOT p q p&&q p q!p (and) (or) (not) T T T T F T F F T F F T F T T F F F F T

Λογικοί τελεστές Παραδείγματα: int x,y; x=10; y=-8; Υπολογισμός των παρακάτω εκφράσεων: (x+5) < (12-y) (10+5) < (12- (-8)) 15< 20 TRUE (x>5) (y>10) (10>5) (-8>10) (TRUE) (FALSE) TRUE

Τελεστής μετατροπής τύπου (typecasting) Ο τελεστής μετατροπής τύπου ή cast τελεστής, όπως αποκαλείται, είναι μοναδιαίος κι έχει τη μορφή (τύπος δεδομένων), π.χ. (float). Τοποθετείται μπροστά από μία έκφραση για να μετατρέψει την τιμή της στον περικλειόμενο σε παρενθέσεις τύπο. Η μετατροπή ισχύει αποκλειστικά στο σημείο εφαρμογής της, όπως φαίνεται στο ακόλουθο παράδειγμα: Παράδειγμα: int i,j; float f1,f2,f3; i=5; j=2; μετατροπή των i και j σε float fl = i/j + 0.5; /* αποτέλεσμα: 2.5 */ f2 = (float)i/(float)j + 0.5; /* αποτέλεσμα : 3.0 */ f3 = i/j + 0.5; /* αποτέλεσμα : 2.5 */

Παράδειγμα: Στον κώδικα που ακολουθεί αποδεικνύεται ότι η μετατροπή τύπου ισχύει για όλους τους τύπους δεδομένων. #include <stdio.h< stdio.h> main(){ char x='a',y A',y; int i=78; float f1; y=(char)i char)i; printf( ( "\ni" ni=%d y=%c\n",i,y ); f1=(float)x float)x; printf( ( "x=%c f1=%f\n",x,f1 ); } Ο ASCII χαρακτήρας με δεκαδικό ισοδύναμο 78

Τελεστής sizeof Ο τελεστής sizeof είναι μοναδιαίος και δρα: α) σε έκφραση, π.χ. sizeof(x+y) και β) σε τύπο δεδομένων, πχ. sizeof(int) Σε κάθε περίπτωση, επιστρέφει τον αριθμό των bytes που η τιμή τής έκφρασης ή ο τύπος των δεδομένων καταλαμβάνει στη μνήμη. Προσοχή θα πρέπει να δοθεί στο γεγονός ότι το σύστημα δεν υπολογίζει την τιμή της έκφρασης κι έτσι πιθανή ύπαρξη παρενεργειών τελεστών δε δημιουργεί παρενέργειες. Μπορεί να βρεθεί το μέγεθος σε bytes ενός πίνακα χρησιμοποιώντας τον τελεστή sizeof. Για παράδειγμα, αν θεωρηθεί ο πίνακας int ar[5]; ηέκφρασηsizeof(ar) δίνει τιμή 20 επειδή ο πίνακας αποτελείται από 5 ακεραίους των 4 bytes.

Τελεστής sizeof (συνέχεια) Στη sizeof θα πρέπει να περιλαμβάνεται μόνο το όνομα του πίνακα. Αν περιληφθεί δείκτης ενός στοιχείου, τότε θα εξαχθεί το μέγεθος του στοιχείου. Για παράδειγμα, η έκφραση sizeof(ar[0]) δίνει τιμή 4. Χρησιμοποιώντας ένα συνδυασμό των παραπάνω μπορεί να βρεθεί ο αριθμός των στοιχείων του πίνακα. Η έκφραση sizeof(ar)/sizeof(ar[0]) δίνει 5, τον αριθμό δηλαδή των στοιχείων του πίνακα ar.

Παράδειγμα: Ο κώδικας που ακολουθεί δίνει το μέγεθος των 4 βασικών τύπων δεδομένων της C. #include <stdio.h> void main() { printf( "\nsize" of char = %d",sizeof(char) ); printf( "\nsize" of int = %d",sizeof(int) ); printf( "\nsize" of float = %d",sizeof(float) ); printf( "\nsize" of double = %d",sizeof(double) ); }