Τύποι Μεταβλητών
Μεταβλητές Μεταβλητή: μια ονοματισμένη θέση αποθήκευσης δεδομένων στη μνήμη Ονοματολογία: περιέχει γράμματα, ψηφία και _ (κάτω παύλα ή χαρακτήρα υπογράμμισης) πρώτος χαρακτήρας γράμμα διαφοροποίηση στα πεζά - κεφαλαία δε μπορεί να είναι δεσμευμένη λέξη
Παραδείγματα Percent y2x5_fg7h _1990_5_23 Saving Account double 9emata_e3etasewn
Ονοματολογία (συνέχεια) Χρησιμοποιείστε περιγραφικά ονόματα Τυποποιείστε ένα στυλ γραφής ΜΗΝ αρχίζετε ονόματα μεταβλητών με υπογράμμιση ΜΗΝ χρησιμοποιείτε μόνο κεφαλαία γράμματα
Τύποι Αριθμητικών Μεταβλητών Ακέραιες μεταβλητές προσημασμένες ακέραιες μεταβλητές μη προσημασμένες (θετικοί αριθμοί) Κινητής υποδιαστολής (πραγματικοί αριθμοί)
Αριθμητικοί τύποι δεδομένων Τύπος Μεταβλητής Δεσμευμένη λέξη Bytes Περιοχή τιμών (ενδεικτική) Χαρακτήρας char 1 -128 .. 127 Short ακέραιος short 2 -32768 .. 32768 Ακέραιος int Long ακέραιος long 4 -2147483648 .. 2147483648
Αριθμητικοί τύποι δεδομένων Τύπος Μεταβλητής Δεσμευμένη λέξη Bytes Περιοχή τιμών (ενδεικτική) Μη προσημασμένος χαρακτήρας unsigned char 1 0..255 Μη προσημασμένος ακέραιος unsigned int 2 0..65535 Μη προσημασμένος short unsigned short Μη προσημασμένος long unsigned long 4 0.. 4.294.967.295
Αριθμητικοί τύποι δεδομένων Τύπος Μεταβλητής Δεσμευμένη λέξη Bytes Περιοχή τιμών (ενδεικτική) Απλής ακρίβειας κινητής υποδιαστολής float 4 1.2E-38 .. 3.4E38 Διπλής ακρίβειας κινητής υποδιαστολής double 8 2.2E-308 1.8E308
/* SIZEOF.C-- Πρόγραμμα που σας λέει το μέγεθος ενός τύπου μεταβλητής σε bytes */ #include <stdio.h> int main(void) { printf("\nA char is %d bytes", sizeof(char)); printf("\nAn int is %d bytes", sizeof(int)); printf("\nA short is %d bytes", sizeof(short)); printf("\nA long is %d bytes", sizeof(long)); printf("\nAn unsigned char is %d bytes", sizeof(unsigned char)); printf("\nAn unsigned int is %d bytes", sizeof(unsigned int)); printf("\nAn unsigned short is %d bytes", sizeof(unsigned short)); printf("\nAn unsigned long is %d bytes", sizeof(unsigned long)); printf("\nA float is %d bytes", sizeof(float)); printf("\nA double is %d bytes", sizeof(double )); return 0; }
Δηλώσεις μεταβλητών Η δήλωση μιας μεταβλητής έχει τη μορφή: Π.χ. όνομα_τύπου όνομα_μεταβλητής; Π.χ. int count, number, start; float percent, total;
Απόδοση αρχικών τιμών int count; count = 0; τελεστής εκχώρησης = Αρχικοποίηση κατά τη δήλωση: int count = 0; double percent = 0.01, taxrate = 28.5; Τι πρόβλημα υπάρχει με την ακόλουθη δήλωση; int ship_weight = 100000;
Άσκηση Τι θα εκτυπωθεί από το παρακάτω πρόγραμμα; #include <stdio.h> int main(void) { int amount; float tax_rate = 0.10; printf("Ο φόρος που θα πληρώσετε είναι %f \n", amount * tax_rate); }
Προσοχή Δώστε αρχικές τιμές όταν δηλώνετε μεταβλητές (εάν είναι δυνατό) Μη χρησιμοποιείτε μια μεταβλητή που δεν έχει αρχικοποιηθεί Χρησιμοποιείστε αποτελεσματικά τις μεταβλητές ανάλογα με τον τύπο τους
Σταθερές Κυριολεκτικές σταθερές Έχει τιμή που πληκτρολογείται άμεσα στον κώδικα. Π.χ. int count = 20; float tax_rate = 0.1; float small_number = 0.1e-8 Εάν η σταθερά αρχίζει με 0 (μηδέν) ερμηνεύεται ως οκταδικός αριθμός, ενώ αν αρχίζει με 0x ή 0X ερμηνεύεται ως δεκαεξαδικός αριθμός.
Σταθερές Συμβολικές σταθερές Δύο τρόποι ορισμού σταθερών Ορίζεται μια φορά και δεν μπορεί να τροποποιηθεί ξανά μέσα στο πρόγραμμα Για παράδειγμα μπορείτε να ορίσετε ότι το π έχει τιμή 3,14159 και στη συνέχεια να χρησιμοποιείτε αυτόν τον ορισμό στις εκφράσεις circumference = 2 * P * radius Δύο τρόποι ορισμού σταθερών
Δήλωση Σταθερών #define P 3.14159 const int count=20; (Προσοχή: δεν έχει ερωτηματικό, ούτε =) Συνηθίζεται να ομαδοποιούνται όλες οι οδηγίες #define στην αρχή του κώδικα πριν τη main() Ο προεπεξεργαστής αντικαθιστά τη λέξη με την αντίστοιχη τιμή μέσα στον κώδικα const int count=20; Η τιμή της count δεν μπορεί να τροποποιηθεί στη συνέχεια
/* Δείχνει τη χρήση μεταβλητών και σταθερών */ #include <stdio.h> /* Ορισμός σταθεράς μετατροπής λιβρών σε γραμμάρια */ #define GRAMS_PER_POUND 454 /* Ορισμός σταθεράς για το 2000 */ const int NEXT_CENTURY = 2000; /* Ορισμός αναγκαίων μεταβλητών */ int weight_in_grams, weight_in_pounds; int year_of_birth, age_in_2000; int main(void) { /* Διάβασε τα στοιχεία από τον χρήστη */ printf("Εισαγωγή του βάρους σε λίβρες: "); scanf("%d", &weight_in_pounds); printf("Εισαγωγή χρονολογίας γέννησης: "); scanf("%d", &year_of_birth); /* Εκτέλεσε μετατροπές */ weight_in_grams = weight_in_pounds * GRAMS_PER_POUND; age_in_2000 = NEXT_CENTURY - year_of_birth; /* Εμφάνισε τα αποτελέσματα στην οθόνη */ printf("\nYour weight in grams = %d", weight_in_grams); printf("\nIn 2000 you will be %d years old", age_in_2000); return 0; }
Ερωτήσεις Τι συμβαίνει εάν εκχωρήσω έναν αριθμό με δεκαδικό μέρος σε μια ακέραια μεταβλητή; Τι συμβαίνει εάν βάλω έναν αριθμό σε έναν τύπο που δεν αρκετά μεγάλος για να τον κρατήσει;