Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Σχετικά έγγραφα
Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

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

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός

Μεταφραστής (Compiler)

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

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

HY150a Φροντιστήριο 3 24/11/2017

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

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

Φροντιςτήριο. Linked-List

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

Αναφορές, είκτες και Αλφαριθμητικά

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

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

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

Προγραμματισμός Υπολογιστών με C++

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

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

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

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

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

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

Διάλεξη 22η: Επιπλέον στοιχεία της C

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

Η γλώσσα C. Δείκτες (pointers)

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Αρχιτεκτονική υπολογιστών

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

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

Χωρική Βάση δεδοµένων Autocad

Η γλώσσα C. Δείκτες (pointers)

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Κεφάλαιο 3. Αριθμητική Υπολογιστών Review. Hardware implementation of simple ALU Multiply/Divide Real Numbers

17TimeThis.h function returns reference pointer to same object { return *this; }

Ένα απλό πρόγραμμα C

Προγραµµατισµός. Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος

Εισαγωγή στα Λειτουργικά Συστήματα

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

Visual Basic Βασικές Έννοιες

Υπερφόρτωση τελεστών (operator(

Συναρτήσεις και Πίνακες

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

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

Υπολογισμός - Εντολές Ελέγχου

Ενότητα 3. Πράξεις, Τελεστές & Σταθερές. Εισαγωγή

Transcript:

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Εισαγωγή στην C++ 1 1 / 27

Εισαγωγή στην C++ - 1 Αρχίζοντας µε την C++ Τύποι εδοµένων (Data Types) Παραστάσεις και Τελεστές (Expressions and Operators) Σειρές Χαρακτήρων (Strings) Μετατροπές και Προαγωγές (Casting and Promotion) 2 / 27

Αρχίζοντας µε την C++ Απλό Παράδειγµα // we want to do I/O #include <iostream> int main() { int v1, v2; // cout: standard output stream object // << : stream insertion operator std::cout << "Please give me two integers: "; // cin: standard input stream object // >> : stream extraction operator std::cin >> v1 >> v2; std::cout << "The numbers are " << v1; std::cout << " and " << v2 << std::endl; return 0; } 3 / 27

Παράδειγµα Ι/Ο µε Μεταβλητές #include <iostream> #include <string> using namespace std; int main() { string s; cout << "Type in your name: " ; cin >> s ; cout << "The name you typed is: " << s << endl; return 0 ; } 4 / 27

Παράδειγµα Ι/Ο µε Αρχεία #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream infile( "input_file" ); if (! infile ) { cerr << "error: unable to open input file!" << endl; return -1; } ofstream outfile( "out_file" ); if (! outfile ) { cerr << "error: unable to open output file!" << endl; return -2; } string word; while ( infile >> word ) outfile << word << ; return 0; } 5 / 27

Μεταγλώττιση (Compilation) και Σύνδεση (Linking) [ένα αρχείο] g++ [-o prog] prog.c Μεταγλώττιση (Compilation) και Σύνδεση (Linking) [πολλά αρχεία] Μεταγλώττιση Σύνδεση g++ -c prog1.c = prog1.o g++ -c prog2.c = prog2.o g++ -c progn.c = progn.o g++ -c main.c = main.o g++ [-o main] main.o prog1.o prog2.o... progn.o 6 / 27

Βασική οµή ενός Προγράµµατος C++ #include<iostream> // other preprocessor directives function-definition 1; function-definition 2;... int main() { declaration 1; declaration 2;... execution-statement 1; execution-statement 2;... } return 0; 7 / 27

Σύνταξη ενός Προγράµµατος C++ Ονοµα (Identifier) Ακολουθία από 1 χαρακτήρες Χαρακτήρες {letters, digits, _} Πεζά γράµµατα κεφαλαία γράµµατα Πρέπει να αρχίζει µε γράµµα ή _ Σχόλια (Comments) Σχόλιο σε µια γραµµή: / /... Σχόλιο πολλών γραµµών: /... / Προσοχή: /*, */ δεν ϕωλιάζουν! Π.χ., το ακόλουθο δεν δουλεύει: / outer comment OUT / i n n e r comment IN / OUT ( cntd ) / 8 / 27

Τύποι εδοµένων (Data Types) Ακέραιοι τύποι δεδοµένων (Integral data types) Data Type Bytes Values [signed] char c; 1 [ 128, 127] unsigned char c; 1 [0, 255] short int x; 2 [ 32768, 32767] unsigned short int x; 2 [0, 65535] int x; 4 [ 2 31, 2 31 1] unsigned int x; 4 [0, 4294967295] long int x; 4 [ 2 31, 2 31 1] unsigned long int x; 4 [0, 4294967295] long long int x; 8 [ 2 63, 2 63 1] unsigned long long int x; 8 [0, 2 64 1] 2 31 = 2, 147, 483, 648 2 63 = 9, 223, 372, 036, 854, 775, 808 2 64 = 18, 446, 744, 073, 709, 551, 616 Αυτές οι τιµές εξαρτώνται από το συγκεκριµένο υπολογιστικό σύστηµα και περιγράφονται στο αρχείο limits. 9 / 27

Τύποι πραγµατικών αριθµών (Real numeric types) Data Type Bytes Values float x; 4 1.17549435 10 38 3.40282347 10 38 double x; 8 2.2250738585072014 10 308 1.7976931348623157 10 308 long double x; 16 10 4931 10 4932 Αυτές οι τιµές εξαρτώνται από το συγκεκριµένο υπολογιστικό σύστηµα και περιγράφονται στο αρχείο limits. 10 / 27

Λογικοί και Απαριθµητικοί Τύποι Λογικός τύπος (Boolean Type) bool flag; // takes value true or false bool BC_deposition = false; Τύπος Απαρίθµησης (Enumeration Type) τύπος δεδοµένων οριζόµενος από τον χρήστη (υπο)σύνολο ακέραιων σταθερών που αναπαρίστανται από αντιπροσωπευτικά ονόµατα Παράδειγµα: #include <iostream> int main() { enum Day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; Day today; today = Monday; std::cout << today << std::endl; // prints 0 return 0; } 11 / 27

Παραστάσεις και Τελεστές Απλή Παράσταση: σύνθεση ενός ή περισσοτέρων τελεσταίων ( operands) και ενός τελεστή ( operator) που εφαρµόζεται σε αυτούς. MISTHOS - FOROS Σύνθετη Παράσταση: συνδιασµός δύο ή περισσοτέρων παραστάσεων. KATHARA_KERDH = ESODA - FOROS - EKSODA 12 / 27

Αριθµητικοί Τελεστές Τελεστής Λειτουργία Χρήση Προσεταιριστικότητα ( ) παρενθέσεις (expr_list) * πολλαπλασιασµός expr * expr / διαίρεση expr / expr % υπόλοιπο διαίρεσης expr % expr Α + πρόσθεση expr + expr - αφαίρεση expr - expr int i = 4, j = 7, k = 5; val = i * j / 2 + k % 2-3; // val has value 12 val = (i * j / (2 + k)) % 2-3; // val has value -3 int i = 21/6; // value of i is 3 rem = 3.14159 % 3; // error: floating point operand 13 / 27

Λογικοί και συσχετιστικοί τελεστές Τελεστής Λειτουργία Χρήση Προσεταιρ.! λογικό NOT!expr Α < µικρότερο expr < expr <= µικρότερο ή ίσο expr <= expr > µεγαλύτερο expr > expr >= µεγαλύτερο ή ίσο expr >= expr == ίσο expr == expr Α!= διάφορο expr!= expr && λογικό AND expr && expr λογικό OR expr expr if (iter <= max && found == true) // do something 14 / 27

Λογικοί τελεστές πράξεων bits (Bitwise Operators) Χρησιµοποιούνται για πράξεις επί των bits ακέραιων τελεσταίων Τελεστής Λειτουργία Χρήση Προσεταιρ. λογικό NOT στα bits expr Α << ολίσθηση αριστερά expr << expr >> ολίσθηση δεξιά expr >> expr & λογικό AND στα bits expr & expr Α ˆ λογικό XOR στα bits expr ˆ expr λογικό OR στα bits expr expr // Assume int are 4 bits unsigned int a = 11; // 1011 unsigned int b =!a; // 0100 unsigned int c = a << 1; // 0110 unsigned int d = a >> 2; // 0010 unsigned int e = a & c; // 0010 unsigned int f = a ˆ c; // 1101 unsigned int g = a c; // 1111 15 / 27

Τελεστές ανάθεσης (Assignment operators) Τελεστής Λειτουργία Χρήση Προσετ. = απλή ανάθεση lvalue = expr *= πολλ/σµός µε ανάθεση lvalue *= expr /= διαίρεση µε ανάθεση lvalue /= expr %= υπόλοιπο διαίρ. µε ανάθεση lvalue %= expr += πρόσθεση µε ανάθεση lvalue += expr -= αφαίρεση µε ανάθεση lvalue -= expr Α <<= ολίσθηση αριστ. µε ανάθεση lvalue <<= expr >>= ολίσθηση δεξιά µε ανάθεση lvalue >>= expr &= λογικό AND µε ανάθεση lvalue &= expr = λογικό OR µε ανάθεση lvalue = expr ˆ= λογικό XOR µε ανάθεση lvalue ˆ= expr a op= b είναι ισοδύναµο µε a = a op b sum += a[i]; div /= 2; // sum = sum + a[i] // div = div/2; 16 / 27

Μονοµελείς τελεστές (Unary operators) Τελεστής Λειτουργία Χρήση Προσετ. ++ επιθεµατική ϐηµατική αύξηση lvalue++ Α -- επιθεµατική ϐηµατική µείωση lvalue-- Α sizeof µέγεθος αντικειµένου sizeof expr sizeof µέγεθος τύπου sizeof(type) ++ προθεµατική ϐηµατική αύξηση ++lvalue -- προθεµατική ϐηµατική µείωση --lvalue Α - µονοµελές µείον -expr + µονοµελές πλήν +expr 17 / 27

Παράδειγµα µε τελεστές #include <iostream> using namespace std; int main() { int x=5; cout << x << endl; // prints 5 cout << x++ << endl; // prints 5 cout << x << endl; // prints 6 x=5; cout << x << endl; // prints 5 cout << ++x << endl; // prints 6 cout << x << endl; // prints 6 cout << sizeof(int) << endl; // size of an int in bytes cout << sizeof(x) << endl; // size of x in bytes // alternatively: sizeof x << endl; return 0; } 18 / 27

Τελεστές (σε σειρά ϕθίνουσας προτεραιότητας) Τελεστής Λειτουργία Χρήση Προσεταιρ. () value construction type(expr_list) ++ post increment lvalue++ L-to-R -- post decrement lvalue-- sizeof size of object sizeof expr sizeof size of type sizeof(type) ++ pre increment ++lvalue -- pre decrement --lvalue bitwise NOT expr! logical NOT!expr R-to-L - unary minus -expr + unary plus +expr & address of &expr * dereference *expr & bitwise AND expr & expr ˆ bitwise XOR expr ˆ expr bitwise OR expr expr RL-to-R && logical AND expr && expr logical OR expr expr?: conditional expression expr?expr:expr << stream insertion expr << expr L-to-R >> stream extraction expr >> expr 19 / 27

Τελεστές (σε σειρά ϕθίνουσας προτεραιότητας - συνέχεια) Τελεστής Λειτουργία Χρήση Προσεταιρ. * multiply expr * expr / divide expr / expr % modulo or remainder expr % expr + plus expr + expr - minus expr - expr << shift left expr << expr >> shift right expr >> expr L-to-R < less than expr < expr <= less than or equal expr <= expr > greater than expr > expr >= greater than or equal expr >= expr == equal expr == expr!= not equal expr!= expr = conventional assignment lvalue = expr *= multiply and assign lvalue *= expr /= divide and assign lvalue /= expr %= modulo and assign lvalue %= expr += add and assign lvalue += expr -= subtract and assign lvalue -= expr R-to-L <<= shift left and assign lvalue <<= expr >>= shift right and assign lvalue >>= expr & = AND and assign lvalue &= expr = OR and assign lvalue = expr ˆ= XOR and assign lvalue ˆ= expr 20 / 27

Σταθερές (Constants) const δηλώνει ένα αντικείµενο ως µη τροποποιήσιµο ένα αντικείµενο τύπου const πρέπει πάντοτε να αρχικοποιείται Παράδειγµα: #include<iostream> using namespace std; int main() { const int x; // Error: x must be initialised x=7; // Error: x is not modifiable } const int x=7; cout << "Value of x is " << x << endl; return 0; 21 / 27

Σειρές χαρακτήρων (strings) Μπορούν να αναπαρασταθούν µε δύο τρόπους: (1) πίνακας τύπου char που τελειώνει µε τον χαρακτήρα null (\0)(µη ασφαλής να αποφεύγεται) (2) αντικείµενα του τύπου δεδοµένων string Παράδειγµα: #include <iostream> #include <string> using namespace std; int main() { char course[40]; strcpy(course, "Algorithm "); // takes care of \0 strcat(course, "Engineering "); strcat(course, "and Experimentation"); cout << course << endl; return 0; } Αλλες συναρτήσεις σειρών χαρακτήρων strcmp(s1,s2); // comparison strlen(s1); // returns the length of s1 22 / 27

Παράδειγµα µε strings #include <iostream> #include <string> using namespace std; int main() { string course; course = "Algorithm "; course += "Engineering "; course += "and Experimentation"; cout << course << endl; return 0; } Αλλες λειτουργίες που αφορούν τον τύπο string Συναρτήσεις Κατασκευής: string s; string s1(s2); Σύγκριση: Συνένωση: Μήκος: Κενότητα: γίνεται χρησιµοποιώντας τους συνήθεις συσχετιστικούς τελεστές s1+s2; s.length(); s.empty(); 23 / 27

Μετατροπές και Προαγωγές Ρητή µετατροπή τύπου (casting) (type) expression C στυλ, να αποφεύγεται type (expression) static_cast<type> (expression) 24 / 27

Παράδειγµα #include <iostream> using namespace std; int main () { char c, ch[] = "a"; float a, b; int i=1, j; a = static_cast<float>(i); b = float(i); c = ch[0]; j = int(c); cout << i << endl; cout << a << endl; cout << b << endl; cout << ch << endl; // prints a cout << j << endl; // prints 97 return 0; } 25 / 27

Προαγωγή (έµµεση µετατροπή τύπου) int counter; float total, average;... average = total/counter; Ιεραρχία προαγωγής των ϐασικών ενσωµατωµένων τύπων long double double float unsigned long int long int unsigned int int unsigned short int short int unsigned char char 26 / 27

Μετατροπές Λογικών Τύπων bool int (προαγωγή): true 1, false 0. αριθµητική τιµή ή τιµή δείκτη bool: zero value false, non-zero value true. Παράδειγµα: bool found = false; int occurrence_count = 0;... if (found) occurrence_count += found; // promotion... if (occurrence_count) { cout << "No. of occurrences "; cout << occurrence_count << endl; } else cout << "Nothing has been found" << endl; 27 / 27