Οι μεταβλητές στη C είναι δοχεία για την αποθήκευση τιμών δεδομένων, όπως αριθμοί και χαρακτήρες.
Στη C, υπάρχουν διαφορετικοί τύποι μεταβλητών (που καθορίζονται με διαφορετικές λέξεις-κλειδιά), όπως για παράδειγμα:
int – αποθηκεύει ακέραιους αριθμούς (ακέραιους), χωρίς δεκαδικά, όπως το 123 ή το -123
float – αποθηκεύει αριθμούς με κινητή υποδιαστολή, με δεκαδικά, όπως το 19,99 ή το -19,99
char – αποθηκεύει μονά γράμματα, όπως το ‘a’ ή το ‘B’. Οι τιμές char περικλείονται σε μονά εισαγωγικά.
Δήλωση (Δημιουργία) Μεταβλητών
Για να δημιουργήσετε μια μεταβλητή, καθορίστε τον τύπο της και αναθέστε της μια τιμή:
Σύνταξη
type variableName = value;
Οπου ο τύπος είναι ένας από τους τύπους της C (όπως int), και το variableName είναι το όνομα της μεταβλητής (όπως x ή myName). Το ίσον σημείο χρησιμοποιείται για την ανάθεση τιμής στη μεταβλητή.
Έτσι, για να δημιουργήσετε μια μεταβλητή που θα αποθηκεύει έναν αριθμό, δείτε το ακόλουθο παράδειγμα:
int myNum = 5; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myNum και τύπο int, και της αναθέτουμε την τιμή 5. Στη συνέχεια, εκτυπώνουμε την τιμή της μεταβλητής στην οθόνη χρησιμοποιώντας τη συνάρτηση printf().
Όπου ο τύπος είναι ένας από τους τύπους της C (όπως int), και το variableName είναι το όνομα της μεταβλητής (όπως x ή myName). Το ίσον σημείο χρησιμοποιείται για την ανάθεση τιμής στη μεταβλητή.
[adinserter block=”2″]
Έτσι, για να δημιουργήσετε μια μεταβλητή που θα αποθηκεύει έναν αριθμό, δείτε το ακόλουθο παράδειγμα:
int myNum = 5; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δημιουργούμε μια μεταβλητή με όνομα myNum και τύπο int, και της αναθέτουμε την τιμή 5. Στη συνέχεια, εκτυπώνουμε την τιμή της μεταβλητής στην οθόνη χρησιμοποιώντας τη συνάρτηση printf().
Μπορείτε επίσης να δηλώσετε μια μεταβλητή χωρίς να της αναθέσετε τιμή, και να της αναθέσετε την τιμή αργότερα:
int myNum; myNum = 15; printf("%d", myNum);
Στο παραπάνω παράδειγμα, δηλώνουμε μια μεταβλητή με όνομα myNum και τύπο int, αλλά δεν της αναθέτουμε τιμή. Στη συνέχεια, αναθέτουμε την τιμή 15 στη μεταβλητή και την εκτυπώνουμε στην οθόνη.
Μάθατε από το κεφάλαιο εξόδου ότι μπορείτε να εξάγετε τιμές/εκτυπώνετε κείμενο με τη συνάρτηση printf():
Παράδειγμα
int x = 5; int y = 6; int sum = x + y; printf("The sum of %d and %d is %d", x, y, sum);
Στο παραπάνω παράδειγμα, δημιουργούμε δύο μεταβλητές με τύπο int και τιμές 5 και 6 αντίστοιχα. Στη συνέχεια, προσθέτουμε τις δύο μεταβλητές και αποθηκεύουμε το αποτέλεσμα στη μεταβλητή sum. Τέλος, εκτυπώνουμε ένα κείμενο που περιέχει τις τιμές των μεταβλητών x, y και sum στην οθόνη. Σημειώστε ότι οι τιμές των μεταβλητών εισάγονται στο κείμενο χρησιμοποιώντας το %d ως μέρος της μορφής εξόδου της συνάρτησης printf().
Σε πολλές άλλες γλώσσες προγραμματισμού (όπως Python, Java και C++), συνήθως χρησιμοποιείτε μια συνάρτηση εκτύπωσης για να εμφανίσετε την τιμή μιας μεταβλητής. Ωστόσο, αυτό δεν είναι δυνατό στη C:
Για να εμφανίσετε την τιμή μιας μεταβλητής στη C, πρέπει να χρησιμοποιήσετε τη συνάρτηση printf() και να χρησιμοποιήσετε τον κατάλληλο μαρκαδόρο τύπου δεδομένων (όπως το %d για ακέραιους αριθμούς) για να εισαγάγετε την τιμή της μεταβλητής στο κείμενο εξόδου.
Παράδειγμα:
int x = 5; printf("The value of x is %d", x);
Στο παραπάνω παράδειγμα, χρησιμοποιούμε τη συνάρτηση printf() για να εμφανίσουμε την τιμή της μεταβλητής x στην οθόνη. Χρησιμοποιούμε το %d ως μέρος του κειμένου εξόδου για να δηλώσουμε ότι εισάγουμε μια ακέραια τιμή, και στη συνέχεια περνάμε την τιμή της μεταβλητής x ως δεύτερο όρισμα στη συνάρτηση printf().
Οι πιο συνηθισμένοι χαρακτήρες μορφοποίησης που χρησιμοποιούνται με τη συνάρτηση printf() είναι:
- %d για ακέραιους αριθμούς
- %f για αριθμούς κινητής υποδιαστολής
- %c για χαρακτήρες
- %s για συμβολοσειρές (strings)
[adinserter block=”3″]
Μπορείτε να χρησιμοποιήσετε αυτούς τους χαρακτήρες μορφοποίησης για να δηλώσετε τον τύπο της μεταβλητής που θέλετε να εξάγετε στην οθόνη, και να εισάγετε την αντίστοιχη τιμή της μεταβλητής χρησιμοποιώντας τη σύνταξη printf(). Εδώ είναι ένα παράδειγμα:
int age = 25; printf("I am %d years old.", age);
Στο παραπάνω παράδειγμα, χρησιμοποιούμε τον χαρακτήρα μορφοποίησης %d για να δηλώσουμε ότι η μεταβλητή age αποθηκεύει έναν ακέραιο αριθμό, και στη συνέχεια εισάγουμε την τιμή της μεταβλητής age χρησιμοποιώντας το δεύτερο όρισμα της συνάρτησης printf().
Ο χαρακτήρας μορφοποίησης %f χρησιμοποιείται για τους αριθμούς κινητής υποδιαστολής (floats) αντί για το %c. Ορίζοντας τον λανθασμένο χαρακτήρα μορφοποίησης για τον τύπο δεδομένων της μεταβλητής σας, μπορείτε να λάβετε παράξενα αποτελέσματα ή ακόμη και να εμφανιστούν σφάλματα.
Αν θέλετε να εκτυπώσετε ένα χαρακτήρα, χρησιμοποιήστε το %c. Για παράδειγμα:
char letter = 'A'; printf("The letter is %c.", letter);
Αν θέλετε να εκτυπώσετε έναν αριθμό κινητής υποδιαστολής (float), χρησιμοποιήστε το %f. Για παράδειγμα:
float number = 3.14; printf("The number is %f.", number);
Σημειώστε ότι μπορείτε να προσδιορίσετε την ακρίβεια του αριθμού κινητής υποδιαστολής που εκτυπώνετε χρησιμοποιώντας την παράμετρο .N παρακάτω του %f, όπου N είναι ο αριθμός των δεκαδικών ψηφίων που θέλετε να εμφανίζονται. Παραδείγματος χάριν:
float number = 3.141592; printf("The number is %.2f.", number);
Σε αυτήν την περίπτωση, ο αριθμός θα εκτυπωθεί με δύο δεκαδικά ψηφία.
Για να εκτυπώσετε διαφορετικούς τύπους σε μια μόνο συνάρτηση printf(), μπορείτε να χρησιμοποιήσετε τα ακόλουθα:
- %d για int
- %f για float
- %c για char
- %s για strings
Παραδείγματος χάριν, μπορείτε να εκτυπώσετε έναν αριθμό int, έναν αριθμό κινητής υποδιαστολής (float), έναν χαρακτήρα char και ένα string με την εξής εντολή:
int num = 10; float fnum = 3.14; char letter = 'A'; char name[] = "John"; printf("The integer is %d, the float is %f, the character is %c, and the string is %s.", num, fnum, letter, name);
Το αποτέλεσμα θα πρέπει να είναι κάτι σαν αυτό:
The integer is 10, the float is 3.140000, the character is A, and the string is John.
Σημείωση: Αν αναθέσετε μια νέα τιμή σε μια υπάρχουσα μεταβλητή, θα αντικατασταθεί η προηγούμενη τιμή της:
Για παράδειγμα, αν έχουμε την εξής κατάσταση:
int num = 5; printf("The value of num is %d", num);
Το αποτέλεσμα θα είναι:
The value of num is 5
Αν αναθέσουμε μια νέα τιμή στη μεταβλητή num
και το εκτυπώσουμε ξανά:
num = 10; printf("The value of num is now %d", num);
Το αποτέλεσμα θα είναι:
The value of num is now 10
[adinserter block=”4″]
Μπορείτε επίσης να αντιστοιχίσετε την τιμή μιας μεταβλητής σε μια άλλη:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x = 5; int y = x;
Σε αυτή την περίπτωση, η μεταβλητή y
θα πάρει την τιμή της μεταβλητής x
, δηλαδή 5
. Αν εκτυπώσουμε την τιμή της y
:
printf("The value of y is %d", y);
Το αποτέλεσμα θα είναι:
The value of y is 5
Ή μπορείτε να αντιγράψετε τιμές σε κενές μεταβλητές:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int a = 5; int b;
Σε αυτή την περίπτωση, η μεταβλητή b
είναι κενή. Μπορούμε να αντιγράψουμε την τιμή της μεταβλητής a
στην b
:
b = a;
Αν εκτυπώσουμε την τιμή της b
:
printf("The value of b is %d", b);
Το αποτέλεσμα θα είναι:
The value of b is 5
Για να προσθέσετε δύο μεταβλητές μαζί, μπορείτε να χρησιμοποιήσετε τον τελεστή +:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x = 5; int y = 3; int sum = x + y;
Η μεταβλητή sum
θα πάρει το άθροισμα των μεταβλητών x
και y
, δηλαδή την τιμή 8
. Αν εκτυπώσουμε την τιμή της sum
:
printf("The sum of x and y is %d", sum);
Το αποτέλεσμα θα είναι:
The sum of x and y is 8
Για να δηλώσετε περισσότερες από μία μεταβλητές του ίδιου τύπου, χρησιμοποιήστε μια λίστα διαχωρισμένη με κόμματα:
Για παράδειγμα, αν θέλουμε να δηλώσουμε δύο ακέραιες μεταβλητές:
int x, y;
Σε αυτή την περίπτωση, οι μεταβλητές x
και y
έχουν δηλωθεί ως ακέραιες, αλλά δεν έχουν αρχικοποιηθεί με κάποια τιμή.
Μπορούμε να τους δώσουμε αρχικές τιμές:
int x = 5, y = 3;
Ή να τους δώσουμε τιμές αργότερα:
x = 5; y = 3;
Μπορείτε επίσης να αντιστοιχίσετε την ίδια τιμή σε πολλές μεταβλητές του ίδιου τύπου:
Για παράδειγμα, αν έχουμε τις ακόλουθες μεταβλητές:
int x, y, z;
Μπορούμε να τους αντιστοιχίσουμε την ίδια τιμή:
x = y = z = 0;
Σε αυτή την περίπτωση, οι μεταβλητές x
, y
και z
έχουν δηλωθεί ως ακέραιες και έχουν αρχικοποιηθεί με την τιμή 0
. Η παραπάνω γραμμή ισοδυναμεί με τρεις ξεχωριστές εκχωρήσεις:
z = 0; y = z; x = y;
Όλες οι μεταβλητές στη C πρέπει να αναγνωρίζονται με μοναδικά ονόματα.
Αυτά τα μοναδικά ονόματα ονομάζονται αναγνωριστικά (identifiers).
Τα αναγνωριστικά μπορούν να είναι σύντομα ονόματα (όπως x και y) ή πιο περιγραφικά ονόματα (age, sum, totalVolume).
[adinserter block=”5″]
Σημείωση: Συνιστάται η χρήση περιγραφικών ονομάτων για να δημιουργήσετε κατανοητό και συντηρήσιμο κώδικα:
Ένα παράδειγμα θα ήταν η δήλωση μιας μεταβλητής για το πλήθος των προϊόντων σε ένα κατάστημα:
int numProducts;
Σε αυτή την περίπτωση, η μεταβλητή ονομάζεται numProducts
, που είναι ένα περιγραφικό όνομα που μας δίνει μια ιδέα για το περιεχόμενό της. Αντιθέτως, ένα σύντομο όνομα όπως n
θα ήταν λιγότερο περιγραφικό και θα δυσκόλευε τον αναγνώστη να κατανοήσει τη χρήση της μεταβλητής στον κώδικα.
Οι γενικοί κανόνες για την ονομασία μεταβλητών είναι οι εξής:
- Οι ονομασίες μπορούν να περιέχουν γράμματα, αριθμούς και κάτω παύλες (_).
- Οι ονομασίες πρέπει να αρχίζουν με γράμμα ή κάτω παύλα (_).
- Οι ονομασίες είναι ευαίσθητες στην πεζή και κεφαλαία γράμματα (η μεταβλητή myVar και η μεταβλητή myvar είναι διαφορετικές μεταβλητές).
- Οι ονομασίες δεν μπορούν να περιέχουν κενά ή ειδικούς χαρακτήρες όπως !, #, %, κλπ.
- Λέξεις κλειδιά (όπως int) δεν μπορούν να χρησιμοποιηθούν ως ονόματα.
Σε αυτό το παράδειγμα θα φτιάξουμε ένα πρόγραμμα στο οποίο θα αποθηκεύουμε πληροφορίες για έναν φοιτητή σε ένα πανεπιστήμιο. Θα χρησιμοποιήσουμε το εξής συνολικό σχέδιο δεδομένων:
- Όνοματεπώνυμο: string
- Ηλικία: int
- Βαθμός: float
Για να κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε τα εξής ονόματα μεταβλητών:
#include <stdio.h> #include <string.h> int main() { char name[50]; int age; float grade; strcpy(name, "John Doe"); age = 21; grade = 8.5; printf("Name: %s\n", name); printf("Age: %d\n", age); printf("Grade: %.2f\n", grade); return 0; }
Στο παραπάνω πρόγραμμα, δηλώνουμε τρεις μεταβλητές με τα ονόματα name
, age
και grade
. Στη συνέχεια, χρησιμοποιούμε τη συνάρτηση strcpy
για να αντιγράψουμε το όνομα του φοιτητή στη μεταβλητή name
, αναθέτουμε την ηλικία του στη μεταβλητή age
, και τον βαθμό του στη μεταβλητή grade
.