Ακόμη περισσότεροι τύποι δεδομένων |
Το πρόγραμμα που βρίσκεται στο αρχείο LOTTYPES.C περιέχει σχεδόν όλους τους απλούς τύπους δεδομένων της C. Υπάρχουν και σύνθετοι τύποι γιά τη δήλωση πινάκων, εγγραφών, συμβολοσειρών, αρχείων κ.λπ. που θα καλυφθούν αργότερα. Ας εξετάσουμε πρώτα τις δηλώσεις των μεταβλητών. Πρώτα ορίζουμε έναν απλό ακέραιο και στη συνέχεια δηλώνουμε έναν 'μεγάλο' ακέραιο (με τη λέξη κλειδί long int) ο οποίος επιτρέπει τιμές στο διάστημα από -2147483648 έως 2147483647, δηλαδή η τιμή της αντίστοιχης μεταβλητής αποθηκεύεται σε 4 bytes. Η δήλωση του 'μικρού' ακέραιου short int που ακολουθεί, ορίζει στην ουσία μιά μεταβλητή των αυτών διαστάσεων με τον κανονικό ακέραιο. Η επόμενη μορφή ακεραίας μεταβλητής είναι αυτή του μη-προσημασμένου ακεραίου (unsigned int). Μιά τέτοια μεταβλητή αποθηκεύεται και αυτή σε 2 bytes αλλά το εύρος των επιτρεπομένων τιμών είναι από 0 έως 65535. Στις δηλώσεις long int, short int και unsigned int η λέξη κελιδί int μπορεί να παραληφθεί χωρίς ιδιαίτερο πρόβλημα. Οι δηλώσεις χαρακτήρων και πραγματικών μεταβλητών έχουν ήδη συζητηθεί. Η δήλωση μεταβλητής double ορίζει έναν πραγματικό αριθμό κινητής υποδιαστολής 'διπλής ακρίβειας' σε αντίθεση με την δήλωση πραγματική μεταβλητή 'απλής ακρίβειας' float που έχει ήδη οριστεί. Η μεγαλύτερη ακρίβεια προέρχεται από το γεγονός οτι ο πραγματικός διπλής ακρίβειας καταλαμβάνει 8 bytes σε αντίθεση με τα 4 bytes του πραγματικού απλής ακρίβειας. Αυτό επιτρέπει περισσότερα bits τόσο γιά τη βάση όσο και γιά τον εκθέτη, έτσι ώστε καλύπτεται το διάστημα τιμών από 1.7E-308 έως 1.7E+308. Οι διάφορες υλοποιήσεις της C μπορεί να περιέχουν και άλλους τύπους όπως unsigned char, unsigned long, κ.λπ. Ελέγξτε το εγχειρίδιο του μεταφραστή σας γιά περισσότερες λεπτομέρειες. Ο λόγος ύπαρξης παραπλήσιων τύπων, όπως int και long ή float και double είναι σημαντικός μόνον όταν έχουμε μεγάλες ποσότητες δεδομένων γιά αποθήκευση και επεξεργασία. Στην περίπτωση μικρών προγραμμάτων όπως είναι τα παραδείγματα που συζητούμε είναι προφανές οτι η χρήση των διευρυμένων εκδόσεων ακεραίων ή πραγματικών αριθμών μας εξασφαλίζει μεγαλύτερο εύρος και μεγαλύτερη ακρίβεια υπολογισμών. Όμως ο απαιτούμενος αποθηκευτικός χώρος διπλασιάζεται και ο χρόνος εκτέλεσης των αντίστοιχων πράξεων αυξάνεται ανάλογα. Επομένως σε πραγματικά προβλήματα όπου μπορεί να έχουμε μεγάλο αριθμό δεδομένων (καποιες χιλιάδες αριθμών, ας πούμε) είναι σημαντικό να χρησιμοποιούμε τον τύπο δεδομένων που μας είναι απαραίτητος και όχι τον μεγαλύτερο δυνατό. |
Διαμορφωμένη εκτύπωση δεδομένων |
Μετά από τις δηλώσεις των διαφόρων τύπων δεδομένων ακολουθεί μιά σειρά εκχωρήσεων που δίνουν κάποιες τιμές στις μεταβλητές με σκοπό την μετέπειτα διαμορφωμένη εκτύπωση αυτών των τιμών. Το αποτέλεσμα του προγράμματος δίνεται αμέσως. a = 1023 a = 1777 a = 3ff b = 2222 c = 123 d = 1234 e = X f = 3.141590 g = 3.141593 a = 1023 a = 1023 a = 1023 a = 1023 a = 1023 f = 3.141590 f = 3.141590 f = 3.142 f = 3.14159 f = 3.14159 Η πρώτη ομάδα εκτυπώσεων, δηλαδή μέχρι την πρώτη κενή γραμμή, εμφανίζει την απλή εκτύπωση των μεταβλητών βασικών τύπων δεδομένων. Η συνάρτηση printf είναι σχεδόν η ίδια, αυτό που αλλάζει είναι το πεδίο ελέγχου. Το πεδίο ελέγχου έχει τη γενική μορφή % πρόθεμα τύπος Ο τύπος βρίσκεται σε ευθεία αντιστοιχία με τον τύπο δεδομένου της μεταβλητής, με πρόσθετη δυνατότητα την παρουσίαση οκταδικών, δεκαεξαδικών αριθμών και συμβολοσειρών. Ακολουθεί ένας κατάλογος των τύπων που προβλέπονται στο πεδίο ελέγχου. d δεκαδικός ακέραιος (int, short int) i δεκαδικός ακέραιος o οκταδικός αριθμός x δεκαεξαδικός αριθμός u μη-προσημασμένος ακέραιος (unsigned int) c χαρακτήρας (char) s συμβολοσειρά (string) f πραγματικός αριθμός (float, double) e πραγματικός αριθμός, εκθετική μορφή Η δεύτερη ομάδα πέντε εκτυπώσεων παρουσιάζει τη λειτουργία του προθέματος στη περίπτωση των ακεραίων αριθμών. Μπορεί να καθοριστή εύρος του πεδίου εκτύπωσης, με χρήση σταθερού ή καιμεταβλητού εύρους. Παρακάτω δίνεται ένας κατάλογος επιλογών του προθέματος. - αριστερή ευθυγράμμιση n ελάχιστο εύρος εκτύπωσης . διαχωριστικό n και m m αριθμός κλασματικών ψηφίων πργαματικού αριθμού l μεγάλος ακέραιος (long int) * παραπομπή σε μεταβλητό πεδίο Η τελευταία ομάδα των εκτυπώσεων παρουσιάζει ορισμένες διαμορφώσεις στην εκτύπωση των πραγματικών αριθμών. |
![]() |
![]() |
![]() |