Εάν ... Η δήλωση 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 και true1.