Εάν ... Η δήλωση Else στο Γ εξηγείται
Η υπό όρους ροή κώδικα είναι η δυνατότητα αλλαγής του τρόπου με τον οποίο συμπεριφέρεται ένα κομμάτι κώδικα βάσει συγκεκριμένων συνθηκών. Σε τέτοιες περιπτώσεις μπορείτε να χρησιμοποιήσετε if
δηλώσεις.
Η if
δήλωση είναι επίσης γνωστή ως δήλωση λήψης αποφάσεων, καθώς λαμβάνει μια απόφαση βάσει μιας δεδομένης συνθήκης ή έκφρασης. Το μπλοκ κώδικα εντός της if
δήλωσης εκτελείται είναι η συνθήκη που αξιολογείται ως αληθής. Ωστόσο, ο κωδικός μέσα στα σγουρά τιράντες παραλείπεται εάν η συνθήκη αξιολογηθεί ως ψευδής και ο κωδικός μετά την if
εκτέλεση της δήλωσης.
Σύνταξη μιας if
δήλωσης
if (testCondition) { // statements }
Ένα απλό παράδειγμα
Ας δούμε ένα παράδειγμα αυτού σε δράση:
#include #include int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }
Παραγωγή:
Statement is True!
Εάν ο κώδικας μέσα στην παρένθεση της if
δήλωσης είναι αληθινός, εκτελείται οτιδήποτε μέσα στα σγουρά τιράντες. Σε αυτήν την περίπτωση, true
αξιολογείται σε true, έτσι ο κώδικας εκτελεί τη printf
συνάρτηση
if..else
δηλώσεις
Σε μια if...else
δήλωση, εάν ο κώδικας στην παρένθεση της if
δήλωσης είναι αληθής, εκτελείται ο κώδικας εντός των παρενθέσεων. Αν όμως η δήλωση μέσα στην παρένθεση είναι λανθασμένη, else
εκτελείται αντ 'αυτού ο κώδικας εντός των παρενθέσεων.
Φυσικά, το παραπάνω παράδειγμα δεν είναι πολύ χρήσιμο σε αυτήν την περίπτωση, γιατί true
πάντα αξιολογείται ως αληθές. Εδώ είναι ένα άλλο που είναι λίγο πιο πρακτικό:
#include int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }
Παραγωγή:
Statement is False!
Υπάρχουν μερικές σημαντικές διαφορές εδώ. Πρώτον, stdbool.h
δεν έχει συμπεριληφθεί. Αυτό είναι εντάξει, επειδή true
και false
δεν χρησιμοποιούνται όπως και στο πρώτο παράδειγμα. Στο C, όπως και σε άλλες γλώσσες προγραμματισμού, μπορείτε να χρησιμοποιήσετε δηλώσεις που αξιολογούνται ως αληθινές ή ψευδείς αντί να χρησιμοποιείτε τις δυαδικές τιμές true
ή false
απευθείας.
Επίσης παρατηρήστε την κατάσταση στην παρένθεση του if
δήλωση: n == 3
. Αυτή η συνθήκη συγκρίνεται n
και ο αριθμός 3. ==
είναι ο χειριστής σύγκρισης και είναι μία από τις πολλές λειτουργίες σύγκρισης στο C.
Ένθετο if...else
Η if...else
δήλωση επιτρέπει την επιλογή μεταξύ δύο δυνατοτήτων. Αλλά μερικές φορές πρέπει να επιλέξετε ανάμεσα σε τρεις ή περισσότερες δυνατότητες.
Για παράδειγμα, η συνάρτηση στα μαθηματικά επιστρέφει -1 εάν το όρισμα είναι μικρότερο από μηδέν, +1 εάν το όρισμα είναι μεγαλύτερο από μηδέν και επιστρέφει μηδέν εάν το όρισμα είναι μηδέν.
Ο παρακάτω κώδικας εφαρμόζει αυτήν τη λειτουργία:
if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;
Όπως μπορείτε να δείτε, μια δεύτερη if...else
δήλωση βρίσκεται μέσα στη else
δήλωση της πρώτης if..else
.
Εάν x
είναι μικρότερο από 0, τότε sign
ορίζεται σε -1. Ωστόσο, εάν x
δεν είναι μικρότερο από 0, if...else
εκτελείται η δεύτερη δήλωση. Εκεί, εάν x
είναι ίσο με 0, sign
ορίζεται επίσης στο 0. Αλλά εάν x
είναι μεγαλύτερο από 0, sign
αντίθετα ορίζεται στο 1.
Αντί για ένθετη if...else
δήλωση, οι αρχάριοι χρησιμοποιούν συχνά μια σειρά από if
δηλώσεις:
if (x 0) { sign = 1; }
Ενώ αυτό λειτουργεί, δεν συνιστάται, καθώς δεν είναι σαφές ότι μόνο μία από τις δηλώσεις ανάθεσης ( sign = ...
) προορίζεται να εκτελεστεί ανάλογα με την τιμή του x
. Είναι επίσης αναποτελεσματικό - κάθε φορά που εκτελείται ο κωδικός, δοκιμάζονται και οι τρεις συνθήκες, ακόμα κι αν δεν χρειάζεται να είναι μία ή δύο.
αλλιώς ... εάν δηλώσεις
if...else
Οι δηλώσεις είναι μια εναλλακτική λύση σε μια σειρά από if
δηλώσεις. Σκέψου τα ακόλουθα:
#include int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }
Παραγωγή:
n is equal to 5!
Εάν η συνθήκη για τη if
δήλωση αξιολογηθεί ως ψευδής, else...if
ελέγχεται η συνθήκη για τη δήλωση. Εάν αυτή η συνθήκη αξιολογηθεί ως αληθής, else...if
εκτελείται ο κωδικός μέσα στα σγουρά τιράντες της δήλωσης.
Χειριστές σύγκρισης
Όνομα χειριστή | Χρήση | Αποτέλεσμα |
---|---|---|
Ισο με | a == b |
Αληθές αν a είναι ίσο με b , ψευδώς διαφορετικά |
Οχι ίσο με | a != b |
Αληθές αν a δεν είναι ίσο με b , αλλιώς ψευδές |
Μεγαλύτερος από | a > b |
Αληθές εάν a είναι μεγαλύτερο από b , ψευδώς διαφορετικά |
Μεγαλύτερο ή ίσο με | a >= b |
Αληθές εάν a είναι μεγαλύτερο ή ίσο με b , ψευδώς διαφορετικά |
Λιγότερο από | a < b |
Αληθές αν a είναι μικρότερο από b , ψευδώς διαφορετικά |
Λιγότερο από ή ίσο με | a <= b |
Αληθές εάν a είναι μικρότερο ή ίσο με b , ψευδώς διαφορετικά |
Λογικοί χειριστές
Μπορεί να θέλουμε να τρέξει λίγο κώδικα εάν κάτι δεν είναι αληθινό ή αν δύο πράγματα είναι αλήθεια. Για αυτό έχουμε λογικούς τελεστές:
Όνομα χειριστή | Χρήση | Αποτέλεσμα |
---|---|---|
Όχι ( ! ) |
!(a == 3) |
Αληθές αν δενa είναι ίσο με 3 |
Και ( && ) |
a == 3 && b == 6 |
Αληθές αν a είναι ίσο με 3 καιb ίσο με 6 |
Ή ( || ) |
a == 2 || b == 4 |
True if a is equal to 2 orb is equal to 4 |
For example:
#include int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }
Output:
n is equal to 5 and m is equal to 10!
An important note about C comparisons
While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.
Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.
For example, his if statement is true and valid:
if(12452) { printf("This is true!\n") }
By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h
library:
#define false 0 #define true 1
Ενώ υπάρχει λίγο περισσότερο σε αυτό, αυτός είναι ο πυρήνας του τρόπου λειτουργίας των booleans και του τρόπου λειτουργίας της βιβλιοθήκης. Αυτές οι δύο γραμμές δίνουν εντολή στον μεταγλωττιστή να αντικαταστήσει τη λέξη false
με 0 και true
1.