Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.



Σχετικά έγγραφα
Τύποι Δεδομένων Είσοδος/Έξοδος

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

Εισαγωγή στην Πληροφορική ΓΕΝΙΚΟ ΤΜΗΜΑ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ TEI ΧΑΛΚΙ ΑΣ

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

Είναι πολύ πιθανό να παραξενευτείτε βλέποντας σύµβολα όπως { και *ptr++.

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στον Προγραµµατισµό «C»

Δεδομένα, Τύποι και Τιμές

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

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

1. Βάσεις αριθμητικών συστημάτων 2. Μετατροπές μεταξύ ξύβάσεων 3. Αρνητικοί δυαδικοί αριθμοί 4. Αριθμητικές πράξεις δυαδικών αριθμών

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

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

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

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

3.1 εκαδικό και υαδικό

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

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

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

Ψηφιακά Κυκλώματα Ι. Μάθημα 1: Δυαδικά συστήματα - Κώδικες. Λευτέρης Καπετανάκης

Διαδικασία Ανάπτυξης Λογισμικού

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Εισαγωγή στην επιστήμη των υπολογιστών. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ και Μετατροπές Αριθμών

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

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

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

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

µπιτ Λύση: Κάθε οµάδα των τεσσάρων µπιτ µεταφράζεται σε ένα δεκαεξαδικό ψηφίο 1100 C 1110 E Άρα το δεκαεξαδικό ισοδύναµο είναι CE2

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

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

Πραγµατικοί αριθµοί κινητής υποδιαστολής Floating Point Numbers. Σ. Τσιτµηδέλης ΤΕΙ ΧΑΛΚΙΔΑΣ

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

Η Γλώσσα Προγραμματισμού C (Μέρος 1 - Εισαγωγή)

CE 120. Φροντιστήριο 14/10/2011

Αριθμητική Ανάλυση & Εφαρμογές

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αριθµητική υπολογιστών

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

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

1. Το σύστημα κινητής υποδιαστολής 2. Αναπαράσταση πραγματικών δυαδικών αριθμών 3. Το πρότυπο 754 της ΙΕΕΕ

1η+2η εβδομάδα. 1 Ιστορία της C. 5 Μαρτίου 2012

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

scanf() scanf() stdin scanf() printf() int float double %lf float

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

Δυαδικη παρασταση αριθμων και συμβολων

Κεφάλαιο 2 Κωδικοποίηση & Αποκωδικοποίηση

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

1. Τύποι Μεταβλητών - ηλώσεις Μορφής ΗΕντολήΕξόδουPrintf

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

Περιεχόµενα. οµή Η/Υ: Αναπαράσταση εδοµένων. υαδικό σύστηµα. Συστήµατα Αρίθµησης υαδικό Οκταδικό εκαεξαδικό Παραδείγµατα

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

ιαφάνειες παρουσίασης #6 (β)

Φροντιστήρια. Σύντομη Ιστορία της C. Μια Σύγκριση των Γλωσσών Προγραμματισμού. Τα Πλεονεκτήματα της C

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

char name[5]; /* define a string of characters */

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

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

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

Πράξεις με δυαδικούς αριθμούς

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

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

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

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

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

Transcript:

Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 3ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης 3.4 Τύποι εδοµένων τής C Ας ρίξουµε τώρα µιά µατιά στά χαρακτηριστικά τών βασικών τύπων δεδοµένων πού χρησιµοποιουνται από τή C. Γιά κάθε τύπο, λέµε πώς νά δηλώνετε µία µεταβλητή, πώς νά αναπαριστάτε µιά σταθερά καί ποιά µπορεί νά είναι µία τυπική χρήση. Ο Τύπος int Η C διαθέτει µία ποικιλια ακεραίων τύπων. Αυτοί διαφέρουν ανάλογα µέ τίς τιµές τους καί από το άν µπορούν ή όχι νά παριστάνουν αρνητικούς αριθµούς. Ο τύπος int είναι ή βασική επιλογή, όµως µερικες φορές ίσως χρειαστείτε άλλες επιλογές γιά νά ικανοποιήσετε τις απαιτήσεις µιάς συγκεκριµένης λειτουργίας η ενός Η/Υ. Ο τύπος int είναι ενας ακεραιος µέ πρόσηµο, δηλ. πρέπει νά είναι ένας ολόκληρος αριθµός καί µπορεί νά είναι θετικός, αρνητικός ή µηδέν. Συνήθως, ένας int µία λέξη µηχανής (δύο ψηφιολέξεις-16 δεκαδικά ψηφία). Τό συνηθισµένο εύρος τιµών είναι από -32768 µέχρι +32767. Συνήθως τό ένα ψηφίο (bit) χρησιµοποιείται γιά τό πρόσηµο. ήλωση µιάς Μεταβλητής Τύπου int Πρώτα είναι ή λέξη int, µετά τό επιλεγµένο όνοµα τής µεταβλητής, µετά ένα ελληνικό ερωτηµατικό. Γιά τη δήλωση περισσοτέρων της µιας µεταβλητής, µπορείτε νά τίς δηλωσετε ξεχωριστά, ή µπορείτε να δώσετε µετά τήν int µία λίστα µε τά ονόµατα τών µεταβλητών, τα οποία θα χωρίζονται µεταξύ τους µε ενα κόµµα. int erns; int hogs, cows, goats; Θα µπορύσαµε νά δηλώναµε την καθε µεταβλητή ξεχωριστά ή να είχαµε δηλώσει καί τις τέσσερις µεταβλητές στην ίδια προταση. Το αποτέλεσµα είναι τό ίδιο: δεσµευεται χώρος στή µνήµη για τεσσερις µεταβλητές τύπου int καί στήν καθε µία αποδιδεται ένα όνοµα. Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής. Οι δηλώσεις δηµιουργούν µεταβλητές, αλλά δέν καταχωρούν τιµές σ αυτές. Αυτό γινεται µέσα στό πρόγραµµα, όπως: cows = 112;

Απόδοση Αρχικής Τιµής σε Μια Μεταβλητή Απόδοση αρχικής τιµής σέ µία µεταβλητή σηµαίνει νά ορίσουµε τή τιµή εκκίνησης τής µεταβλητής. Στη C αυτό µπορεί να γίνει σε µία προταση δηλωσης, όπου µετά το όνοµα τής µεταβλητής υπάρχει ο τελεστής καταχώρησης (=), και µετά η τιµή, πού θελετε να έχει η µεταβλητή. Π.χ. int hogs = 21; int cows = 32, goats = 14; int dogs, cats = 94; /* επιτρεπτό αλλά ελλιπές */ Καλό θά είναι να µήν βάζουµε στήν ιδια πρόταση δήλωσης µεταβλητές, πού παίρνουν αρχικές τιµές, καί µεταβλητές πού δέν παίρνουν. Σέ συντοµία λοιπόν, µέ τή δήλωση δηµιουργείται καί δίνεται ένα όνοµα σέ ένα χώρο αποθηκευσης και µε την απόδοση αρχικής τιµης καταχωρείται εκεί µια τιµή. Βλεπε παρακάτω εικόνα. Εικόνα 3.4: Ορισµός µιάς µεταβλητής καί απόδοση αρχικής τιµής Κανονικά η C υποθέτει ότι γράφετε τούς ακεραίους στό δεκαδικό σύστηµα. Πώς, όµως, θά γίνεται η διάκριση ότι τό 10,000 είναι στό δεκαδικο ή στό δεκαεξαδικό ή στό οκταδικό σύστηµα; Το προθεµα 0 (µηδέν) σηµαίνει οτι γράφετε στό οκταδικό. Γιά παράδειγµα ο δεκαδικός αριθµός 16 γραφεται σαν οκταδικος ώς 020. Παρόµοια το πρόθεµα 0χ ή 0Χ σηµαίνει οτι ο αριθµός είναι δεκαεξαδικός. Έτσι ο 16 γράφεται στό δεκαεξαδικό σύστηµα ώς 0χ10 ή 0Χ10.

Εκτύπωση Τιµών Τύπου int Μπορούµε νά χρησιµοποιήσουµε τή συνάρτηση printf( ) για νά εκτυπώσουµε ακεραίους int. Όπως είδαµε, ο συµβολοσµός %d χρησιµοποιείται για να δειξει σε ποιο σηµείο µιας γραµµης θα εκτυπωθει ένας ακέραιος. Κάθε συµβολο %d θά πρέπει νά αντιστοιχει µέ µια τιµή int, που µπορεί νά νά αντιστοιχεί σε µια µεταβλητη τύπου int, µια σταθερά τύπου int ή οποιαδήποτε άλλη έκφραση, που έχει µια ακέραια (int) τιµή. Στην Λίστα 3.3 παρουσιαζεται ενα απλο προγραµµα, που αποδιδει µια αρχική τιµή σε µιά µεταβλητη και µετά εκτυπώνει µερικές τιµές. /* print1.c µερικές ιδιοτητες τής printf( ) */ Λίστα 3.3 int ten = 10; printf( %d µειον %d ισον %d\n, ten, 2, ten-2); Μεταγλωτίζοντας και κατόπιν τρέχοντας τό προγραµµα παίρνουµε: 10 µείον 2 ίσον 8 Για να εκτυπωσουµε ένα ακεραιο στό οκταδικό σύστηµα, χρησιµοποιήστε %o αντί για %d, ενω για το δεκαεξαδικό σύστηµα χρησιµοποιούµε %x. Στην Λίστα 3.4 δίνεται ένα παράδειγµα: /* bases.c εκτύπωση τού 100 σε δεκαδικο, οκταδικό καί δεκαεξαδικό σύστηµα */ Λιστα 3.4 int x = 100; printf( δεκαδ = %d; οκταδ = %ο, δεκαεξ = %x\n, x, x, x);

Μεταγλωτίζοντας καί τρέχοντας το πρόγραµµα παίρνουµε: εκαδ = 100, οκταδ = 144, δεκαξ = 64 Αλλοι Τυποι Ακέραιων Η C προσφέρει τρείς λέξεις-κλειδιά γιά τήν τροποποίηση του βασικού τύπου ακεραίου: unsigned, long, και short. 1. Ο τύπος short int, ή short, χρησιµοποιεί λιγότερο χώρο αποθηκευσης από οτι ο int, και έτσι εξοικονοµείται χώρος, όταν χρησιµοποιούνται µόνο µικροί αριθµοί. Όπως ο int έτσι και ο τύπος short είναι ένας τύπος µέ πρόσηµο. 2. Ο τύπος long int ή long χρησιµοποιεί περισσότερο χώρο αποθήκευσης από ότι ο int και επιτρέπει τη χρήση µεγάλων ακεραίων. Όπως και ο τύπος int έτσι και ο long είναι ένας τύπος µέ πρόσηµο. 3. Ο τύπος unsigned int, ή unsigned, αλλάζει τήν κλίµακα τών αριθµών πού µπορουν να αποθηκευτούν. Γιά παράδειγµα, ένας ακέραιος τών ψηφιολέξεων (byte) τύπου unsigned int επιτρέπει τή χρήση της κλίµακας από το 0 µεχρι το 65535 αντι απο το - 32768 µέχρι το +32767. Το δεκαδικό ψηφιο πού χρησιµοποιούνταν γιά το πρόσηµο, τώρα χρησιµοποιείται γιά τήν αποθήκευση του αριθµού, επιττρέποντας έτσι τή χρήση µεγάλων αριθµών. 4. Η ANSI C, όπως και πολλοί άλλοι µεταγλωτιστές τής C αναγνωρίζουν ώς επιτρεπτούς τύπους καί τους παρακάτω: unsigned long int, ή unsigned long, και unsigned short int ή unsigned short Η κοινή πρακτική, σήµερα, είναι οι ακεραιοι τύποι long νά περιέχουν 32 δεκαδικά ψηφία, οι τύποι short 16 καί οί τύποι int είτε 16 είτε 32 ανάλογα µέ το φυσικό µήκος λέξης του Η/Υ. Η ANSI C παρέχει οδηγίες που καθοριζουν το ελάχιστο επιτρεπτο µεγεθος για καθε βασικό τύπο δεδοµένων. Το ελάχιστο ευρος για τους τύπους short και int ειναι από -32767 µεχρι 32767 για µια µοναδα µε δυο ψηφιολέξεις, ενώ για τον τύπο long ειναι απο -2147483647 µέχρι 22147483647, για µια µονάδα µε 4 ψηφιολέξεις. Για τούς τύπους unsigned short και unsigned int, το ελαχιστο ευρος είναι από 0 µέχρι 65535 και για τον τύπο unsigned long το ελάχιστο ευρος είναι από 0 µέχρι 4294967295. Υπερχείλιση Ακεραιου Τι συµβαίνει στήν περιπτωση, πού ένας ακεραιος είναι πολύ µεγάλος γιά τον τύπο του; Ας δουµε ένα παράδειγµα, στο οποιο προσθέτουµε έναν αριθµό στή µεγαλύτερη δυνατή θετική τιµή τού συστήµατος.

/* toobig.c ξεπέρασµα του µεγιστου µεγέθους int του συστήµατος µας int i = 32767; printf( %d %d %d\n, i, i+1, i+2); Το αποτέλεσµα για το σύστηµα µας είναι: 32767-32768 -3276 Ο ακέραιος i ενεργει σάν το κοντέρ ενός αυτοκινήτου. Όταν φθάσει τήν µεγαλυτερη τιµή του αρχίζει παλι από τήν αρχή, στήν περιπτωση µας τήν τιµή -32768. ήλωση Άλλων Τύπων Ακεραίων Άλλοι τύποι ακεραίων δηλώνονται όπως καί ο τύπος int. Στην παρακάτω λίστα δίνονται µερικά παραδειγµατα (τα δύο τελευταία δέν θα τά αναγνωρίζουν όλοι οι µεταγλωτιστές ). long int estine; long johns; short in terns; short ribs; unsigned int s_count; unsigned players; unsigned long headcount; unsigned short yesvotes; Σταθερές Τύπου long Ό µεταγλωτιστής διαχειρίζεται τον αριθµό 1000000 σαν τύπου long int, υποθέτοντας ότι αυτός ο τύπος είναι αρκετά µεγάλος. Εαν ένας είναι µεγαλύτερος από το µέγιστο τύπο long, η C τον διαχειρίζεται ως τύπου unsigned long. Για να αποθηκευτεί µία σταθερά σαν τυπος long, θά πρέπει νά προσθέσετε τήν κατάληξη l ή L. Εµείς προτίνουµε τή δεύτερη, γιατί µοιαζει λιγότερο µέ το ψηφίο 1. Έτσι, σε ένα συστηµα

µε τυπους int των 16 δεκαδικων ψηφιων καί τύπους long τών 32 δυαδικών ψηφίων, ο ακέραιος 7 θά αποθηκευτεί σέ 2 ψηφιολέξεις (bytes), ενώ ο ακέραιος 7L σε 4 ψηφιολέξεις. Εκτύπωση τών Τύπων long, short και unsigned Για τήν εκτύπωση ενός αριθµού τύπου unsigned χρησιµοποιείστε το συµβολισµό %u. Για τήν εκτύπωση µιας τιµής τύπου long, χρησιµοποιήστε το συµβολοισµό %ld. Μπορείτε νά χρησιµοποιήσετε ένα πρόθεµα h για τόν τύπο short. Έτσι %hd εκτυπώνει έναν ακέραιο τύπου short µε δεκαδική µορφή, και %ho για οκταδική µορφή. Και το h και το l µπορούν νά χρησιµοποιηθούν µε το u για τύπου unsigned ακεραίους. Η Λίστα 3.6 δίνει ένα παραδειγµα. /* print2.c περισσότερες ιδιοτητες τών printf( ) */ Main( ) unsigned un = 40000; long ln = 2000000000; lnsigned long uln = 2* 2000000000; /* or 4000000000 */ short sn = 200; printf( un = %u και όχι %d\n, un, un); printf( ln = %ld και όχι %d\n, ln, ln); printf( uln = %lu και όχι %u\n, uln, uln); printf( sn = %hd and in this system,%d\n, sn, sn); Λίστα 3.6 Η έξοδος είναι: Un = 40000 και οχι -25536 Ln = 2000000000 και όχι -27648 Uln = 4000000000 και όχι 10240 Sn = 200 and in this system, 200

Τρέξαµε το πρόγραµµα µας σ ενα σύστηµα όπου οι int και short είναι τύποι τού ιδίου µεγέθους, το %hd και το %d παρήγαγαν το ίδιο αποτέλεσµα. Χρησιµοποιώντας χαρακτήρες: Τύποι char Όπως έχουµε πει, ο τύπος char χρησιµοποιείται για τήν αποθήκευση χαρακτήρων, όπως γράµµατα καί σηµεία στίξης, αν και τεχνικώς είναι ένας τύπος ακέραίων, για τ στήν πραγµατικότητα αποθηκεύει ακεραίους, όχι χαρακτήρες. Η C εγγύάται ότι ο τύπος char θα είναι αρκετά µεγάλος για νά αποθηκευσει τό βασικό σύνολο χαρακτήρων τού συστήµατος, όπου εφαρµόζεται η C. ήλωση Μεταβλητών Τύπου char Οι µεταβλητές char δηλώνονται µέ τόν ίδιο τρόπο, όπως οί µεταβλητές. Π.χ. char response; char itable, latan; Παραπάνω, δηµιουργούνται τρείς µεταβλητές char: response, itable και latan. Με πρόσηµο ή Χωρίς Πρόσηµο; Μερικές εκδόσεις τής C έχουν τόν τύπο char ώς τύπο µέ πρόσηµο, πράγµα που σηµαίνει ότι µπορεί νά κρατά τιµές, που βρίσκονται, τυπικώς, στήν περιοχή από -128 µέχρι +127. Άλλες εκδόσεις έχουν τόν τύπο char ως τύπο χωρίς πρόσηµο, πράγµα πού σηµαίνει ότι παρέχουν τήν σειρά από 0 µέχρι 255. Ανεξάρτητα από τί είναι ο char, ο signed char είναι µέ πρόσηµο, και ο unsigned char χωρίς πρόσηµο. Σταθερές Χαρακτήρα καί Αρχικές Τιµές Char grade = 65; Ιδιο µε char grade = A ; Ένα γράµµα µεταξύ απλών εισαγωγικών είναι για τη C µια σταθερά χαρακτήρα. Άλλο παραδειγµα: Char broiled; /* ηλώνει µεταβλητή τύπου χαρακτήρα*/ Broiled = T ; /* OK */ Broiled = T; /* ΟΧΙ! Θεωρεί ότι T ειναι µία µεταβλητή */ Broiled = T ; /* OXI! Θεωρεί ότι T ειναι µια συµβολοσειρά

Απεικόνιση Χαρακτήρων Η συνάρτηση printf( ) χρησιµοποιεί το %c για να δείξει ότι πρέπει να τυπωθεί ένας χαρακτήρας. Θυµηθείτε ότι οί χαρακτήρες είναι αποθηκευµένοι σάν ακέραιοι, οπότε άν τυπώσουµε τήν τιµή µιάς µεταβλητής τύπου char θά πάρουµε έναν ακέραιο. /* charcode.c εµφανίζει τόν κωδικό αριθµό κάποιου χαρακτήρα */ char ch; printf( Παρακαλώ, δώστε έναν χαρακτήρα. \n ); scanf( %c, &ch); /* χαρακτήρας εισόδου από τόν χρήστη printf( Ο κώδικας του %c ειναι %d. \n, ch, ch); Λίστα 3.7 H έξοδος τού προγράµµατος είναι: Παρακαλώ, δώστε ένα χαρακτήρα C O κώδικας τού C είναι 67 Εικόνα 3.6 Απεικόνιση δεδοµένων καί αποθήκευση δεδοµένων. Οί τύποι float και double Προγράµµατα µαθατικής φύσης συχνά χρησιµοποιούν αριθµους κινητής υποδιαστολής. Στήν C τετοιοι αριθµοί λέγονται τύπου float. Η προσέγγιση κινητής υποδιαστολής σάς επιτρέπει

να παραστήσετε ένα πολυ µεγάλύτερο ευρος αριθµών, περιλαµβανοµένων και δεκαδικών κλασµάτων. Αριθµος Επιστηµονικός Συµβολισµός Εκθετικός Συµβολισµός 1,000,000,000 = 1.0 χ 10 = 1.0e 123,000 = 1.23 χ 10 = 1.23e 322.56 = 3.2256 χ 10 = 3.2256e 0.000056 = 5.6 χ 10 = 5.6e Συνήθως, χρησιµοποιούνται 32 bits (δυαδικά ψηφία): οκτώ bits χρισιµοποιούνται γιά νά δώσουν τόν εκθέτη, τήν τιµή και το πρόσηµο του, καί 24 bits χρησιµοποιούνται για νά παραστήσουν το µή εκθετικό µέρος. Έτσι έχουµε µια ακρίβεια 6 ή 7 δεκαδικών ψηφίων και ένα ευρος απο 10 µεχρι 10. Η C έχει επίσης τον τύπο double (για διπλή ακρίβεια) για αριθµούς κινητής υποδιαστολής. Ό τύπος συνήθως χρησιµοποιεί τά διπλασια bits, τυπικά 64 ηλώνοντας Μεταβλητές Κινητής Υποδιαστολής Οι µεταβλητές κινητής υποδιαστολής δηλώνονται καί παίρνουν αρχικές τιµές ακριβώς όπως τά ξαδέρφια τους: float noah, jonah; double trouble; float planck = 6.63e-34; long double gnp; Τυπώνοντας τιµές κινητής υποδιαστολής Η συνάρτηση printf( ) χρησιµοποιεί τόν προσδιριστή µορφής %f για νά τυπώσει τύπου float και double αριθµούς, χρησιµοποιώντας δεκαδικό συµβολισµό, καί χρησιµοποιεί %e για νά τους τυπώσει σέ εκθετικό συµβολισµό. ές τή Λίστα 3.8 /* showf_pt.c δύο τρόποι εµφάνισης τιµής τύπου float */ float value = 32000.0; printf( ο %f µπορεί νά γραφτεί %e \n, value, value);

Λίστα 3.8 Η έξοδος είναι: O 32000.000000 µπορεί νά γραφτεί 3.200000e+004 Εικονα 3.8: Τύποι δεδοµένων τής C για ένα τυπικό σύστηµα Μεγέθη Τύπων Η C έχει έναν εσωτερικό τελεστή, τόν sizeof, που δίνει τό µέγεθος κάποιων πραγµάτων σε bytes (ψηφιολέξεις). /* typesize.c τυπώνει τά µεγέθη τών τύπων */ printf( Ο τύπος int έχει µέγεθος %d bytes. \n, sizeof(int));

printf( Ο τύπος char έχει µέγεθος %d bytes. \n, sizeof(char)); printf( Ο τύπος long έχει µέγεθος %d bytes. \n, sizeof(long)); printf( Ο τύπος double έχει µέγεθος %d bytes. \n, sizeof(double));