Στην C, οι boolean τιμές αναπαρίστανται με τον τύπο δεδομένων bool, ο οποίος μπορεί να πάρει μια από τις δύο τιμές: true (αληθής) ή false (ψευδής). Η τιμή true αντιπροσωπεύει την αλήθεια, ενώ η τιμή false αντιπροσωπεύει το ψεύδος.
Για παράδειγμα, μπορούμε να δηλώσουμε μια μεταβλητή bool με την τιμή true ή false και να την χρησιμοποιήσουμε για τον έλεγχο μιας συνθήκης:
#include <stdbool.h> #include <stdio.h> int main() { bool isCodingFun = true; if (isCodingFun) { printf("Coding is fun!"); } else { printf("Coding is not fun."); } return 0; }
Στο παραπάνω παράδειγμα, δηλώνουμε μια μεταβλητή isCodingFun ως true και στη συνέχεια ελέγχουμε αν η τιμή της είναι true ή false με έναν έλεγχο if. Επειδή η τιμή της είναι true, θα εκτυπώσουμε το μήνυμα “Coding is fun!”.
Η bool δεν είναι ενσωματωμένος τύπος δεδομένων στη C πριν το πρότυπο C99, και για να χρησιμοποιήσετε μεταβλητές bool στη C, πρέπει να εισαγάγετε την επικεφαλίδα stdbool.h.
Με τη χρήση της εντολής #include , ο τύπος δεδομένων bool ορίζεται ως ένας τύπος που μπορεί να έχει μόνο δύο τιμές: true (αληθής) ή false (ψευδής).
Παράδειγμα κώδικα:
#include <stdbool.h> #include <stdio.h> int main() { bool isCodingFun = true; if (isCodingFun) { printf("Coding is fun!"); } else { printf("Coding is not fun."); } return 0; }
Στο παραπάνω παράδειγμα, δηλώνουμε μια μεταβλητή isCodingFun ως true και στη συνέχεια ελέγχουμε αν η τιμή της είναι true ή false με έναν έλεγχο if. Επειδή η τιμή της είναι true, θα εκτυπώσουμε το μήνυμα “Coding is fun!”.
Στη C, οι τιμές boolean επιστρέφονται ως ακέραιοι:
Το 1 (ή οποιοδήποτε άλλο μη μηδενικό ακέραιο) αντιπροσωπεύει την τιμή true
Το 0 αντιπροσωπεύει την τιμή false
Για να εκτυπώσετε μια boolean τιμή, πρέπει να χρησιμοποιήσετε τον format specifier %d:
Παράδειγμα κώδικα:
#include <stdio.h> #include <stdbool.h> int main() { bool isProgrammingFun = true; bool isFishTasty = false; printf("Programming is fun: %d\n", isProgrammingFun); printf("Fish is tasty: %d\n", isFishTasty); return 0; }
Στο παραπάνω παράδειγμα, δηλώνουμε δύο μεταβλητές boolean: isProgrammingFun και isFishTasty. Χρησιμοποιώντας την printf() συνάρτηση και το format specifier %d, εκτυπώνουμε τις boolean τιμές και τις αντίστοιχες ακέραιες τιμές τους (1 ή 0).
[adinserter block=”2″]
Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα θα είναι:
Programming is fun: 1 Fish is tasty: 0
Αυτό συμβαίνει διότι η μεταβλητή isProgrammingFun
έχει τιμή true
, η οποία αντιστοιχεί στον ακέραιο 1, ενώ η μεταβλητή isFishTasty
έχει τιμή false
, η οποία αντιστοιχεί στον ακέραιο 0.
Το παρακάτω παράδειγμα χρησιμοποιεί τον τελεστή μεγαλύτερο από (>) για να συγκρίνει δύο αριθμούς και να εκτυπώσει αν ο πρώτος αριθμός είναι μεγαλύτερος από τον δεύτερο:
#include <stdio.h> int main() { int x = 5; int y = 3; if (x > y) { printf("x is greater than y\n"); } return 0; }
Το πρόγραμμα θα εκτυπώσει “x is greater than y”, διότι ο αριθμός x έχει την τιμή 5, η οποία είναι μεγαλύτερη από την τιμή του αριθμού y, που είναι 3.
Ο τελεστής μεγαλύτερο από (>) χρησιμοποιείται για να συγκρίνει δύο αριθμούς ή μεταβλητές. Αν ο πρώτος αριθμός είναι μεγαλύτερος από τον δεύτερο, τότε η συνθήκη είναι αληθής και η εντολή που ακολουθεί την συνθήκη εκτελείται.
Στο παράδειγμα που δώσαμε, έχουμε δηλώσει δύο μεταβλητές x
και y
και τους έχουμε αναθέσει τις τιμές 5 και 3 αντίστοιχα. Στη συνέχεια, χρησιμοποιούμε τον τελεστή μεγαλύτερο από (>) στην συνθήκη της εντολής if, για να συγκρίνουμε τις δύο μεταβλητές. Αν η τιμή της μεταβλητής x
είναι μεγαλύτερη από την τιμή της μεταβλητής y
, τότε η συνθήκη είναι αληθής και η εντολή printf("x is greater than y\n");
εκτελείται, εκτυπώνοντας στην οθόνη το μήνυμα “x is greater than y”. Στη συνέχεια, το πρόγραμμα επιστρέφει την τιμή 0, διότι η συνάρτηση main δεν επιστρέφει κάποια τιμή.
Στο παρακάτω παράδειγμα, χρησιμοποιούμε τον τελεστή ισότητας (==) για να συγκρίνουμε διαφορετικές τιμές:
#include <stdio.h> int main() { int x = 10; int y = 5; int z = 10; printf("%d\n", x == y); // Εκτυπώνει 0 (όχι ίσο) printf("%d\n", x == z); // Εκτυπώνει 1 (ίσο) return 0; }
Στον παραπάνω κώδικα, έχουμε τρεις μεταβλητές x
, y
και z
. Οι μεταβλητές x
και z
έχουν την ίδια τιμή (10), ενώ η μεταβλητή y
έχει διαφορετική τιμή (5).
Με τη χρήση του τελεστή ισότητας (==), συγκρίνουμε τις τιμές των μεταβλητών x
και y
και των x
και z
. Η πρώτη σύγκριση επιστρέφει 0, δηλαδή false, επειδή οι τιμές των μεταβλητών δεν είναι ίσες. Η δεύτερη σύγκριση επιστρέφει 1, δηλαδή true, επειδή οι τιμές των μεταβλητών x
και z
είναι ίσες.
[adinserter block=”3″]
Δεν περιορίζεστε στη σύγκριση αριθμών. Μπορείτε επίσης να συγκρίνετε μεταβλητές boolean ή ακόμη και ειδικές δομές, όπως οι πίνακες (τους οποίους θα μάθετε περισσότερα σε ένα αργότερο κεφάλαιο):
Παράδειγμα:
Εδώ είναι ένα παράδειγμα που συγκρίνει δύο μεταβλητές boolean με τον τελεστή ==:
#include <stdio.h> #include <stdbool.h> int main() { bool a = true; bool b = false; if (a == b) { printf("a equals b\n"); } else { printf("a does not equal b\n"); } return 0; }
Επειδή οι μεταβλητές a
και b
είναι boolean, το αποτέλεσμα της σύγκρισης a == b
θα επιστρέψει false
. Η εντολή if εκτελείται όταν το αποτέλεσμα της σύγκρισης είναι ψευδές (false), επομένως το αποτέλεσμα του προγράμματος θα είναι:
a does not equal b
Εδώ είναι ένα παράδειγμα που χρησιμοποιεί τον τελεστή >= για να ελέγξει αν ένα άτομο είναι αρκετά μεγάλο για να ψηφίσει:
#include <stdio.h> int main() { int age = 25; int votingAge = 18; if (age >= votingAge) { printf("You are old enough to vote.\n"); } else { printf("You are not old enough to vote.\n"); } return 0; }
Εδώ, οι μεταβλητές age
και votingAge
περιέχουν την ηλικία του χρήστη και το όριο ηλικίας για το ψήφο, αντίστοιχα. Η εντολή if εκτελείται όταν η ηλικία είναι μεγαλύτερη από ή ίση με το όριο ηλικίας, επομένως το πρόγραμμα θα εκτυπώσει το μήνυμα:
You are old enough to vote.