If ... Sonst Aussage in C erklärt

Der bedingte Codefluss ist die Fähigkeit, das Verhalten eines Codeteils unter bestimmten Bedingungen zu ändern. In solchen Situationen können Sie ifAnweisungen verwenden.

Die ifAussage wird auch als Entscheidungserklärung bezeichnet, da sie eine Entscheidung auf der Grundlage einer bestimmten Bedingung oder eines bestimmten Ausdrucks trifft. Der Codeblock in der ifAnweisung wird ausgeführt, wenn die Bedingung als wahr ausgewertet wird. Der Code in den geschweiften Klammern wird jedoch übersprungen, wenn die Bedingung als falsch ausgewertet wird, und der Code nach ifAusführung der Anweisung.

Syntax einer ifAnweisung

if (testCondition) { // statements }

Ein einfaches Beispiel

Schauen wir uns ein Beispiel dafür in Aktion an:

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

Ausgabe:

Statement is True!

Wenn der Code in Klammern der ifAnweisung wahr ist, wird alles in geschweiften Klammern ausgeführt. In diesem Fall wird truetrue ausgewertet, sodass der Code die printfFunktion ausführt.

if..else Aussagen

if...elseWenn in einer Anweisung der Code in der Klammer der ifAnweisung wahr ist, wird der Code in den Klammern ausgeführt. Wenn die Anweisung in der Klammer jedoch falsch ist, elsewird stattdessen der gesamte Code in den Klammern der Anweisung ausgeführt.

Natürlich ist das obige Beispiel in diesem Fall nicht sehr nützlich, da es trueimmer als wahr ausgewertet wird. Hier ist eine andere, die etwas praktischer ist:

#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; }

Ausgabe:

Statement is False!

Hier gibt es einige wichtige Unterschiede. Erstens stdbool.hwurde nicht aufgenommen. Das ist okay, weil trueund falsenicht wie im ersten Beispiel verwendet werden. In C können Sie wie in anderen Programmiersprachen Anweisungen verwenden, die als wahr oder falsch ausgewertet werden, anstatt die booleschen Werte trueoder falsedirekt zu verwenden.

Beachten Sie auch die Bedingung in der Klammer der ifAnweisung : n == 3. Diese Bedingung wird verglichen nund die Zahl 3 ==ist der Vergleichsoperator und eine von mehreren Vergleichsoperationen in C.

Verschachtelt if...else

Die if...elseAussage erlaubt die Wahl zwischen zwei Möglichkeiten. Aber manchmal müssen Sie zwischen drei oder mehr Möglichkeiten wählen.

Beispielsweise gibt die Vorzeichenfunktion in der Mathematik -1 zurück, wenn das Argument kleiner als Null ist, +1, wenn das Argument größer als Null ist, und gibt Null zurück, wenn das Argument Null ist.

Der folgende Code implementiert diese Funktion:

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

Wie Sie sehen können, ist eine zweite if...elseAnweisung in der elseAnweisung der ersten verschachtelt if..else.

Wenn xkleiner als 0 ist, signwird auf -1 gesetzt. Wenn xjedoch nicht weniger als 0 ist, wird die zweite if...elseAnweisung ausgeführt. Dort wird, wenn xgleich 0 signist, auch auf 0 gesetzt. Wenn xes jedoch größer als 0 ist, signwird stattdessen auf 1 gesetzt.

Anstelle einer verschachtelten if...elseAnweisung verwenden Anfänger häufig eine Reihe von ifAnweisungen:

if (x  0) { sign = 1; }

Dies funktioniert zwar, wird jedoch nicht empfohlen, da unklar ist, dass nur eine der Zuweisungsanweisungen ( sign = ...) abhängig vom Wert von ausgeführt werden soll x. Es ist auch ineffizient - jedes Mal, wenn der Code ausgeführt wird, werden alle drei Bedingungen getestet, auch wenn eine oder zwei nicht sein müssen.

sonst ... wenn Aussagen

if...elseAnweisungen sind eine Alternative zu einer Reihe von ifAnweisungen. Folgendes berücksichtigen:

#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; }

Ausgabe:

n is equal to 5!

Wenn die Bedingung für die ifAnweisung als falsch ausgewertet wird, wird die Bedingung für die else...ifAnweisung überprüft. Wenn diese Bedingung als wahr ausgewertet wird, wird der Code in den else...ifgeschweiften Klammern der Anweisung ausgeführt.

Vergleichsoperatoren

Name des BedienersVerwendungErgebnis
Gleicha == bRichtig, wenn agleich b, sonst falsch
Nicht gleichzusetzen mita != bRichtig, wenn anicht gleich b, sonst falsch
Größer alsa > bWahr wenn agrößer als b, sonst falsch
Größer als oder gleich wiea >= bRichtig, wenn agrößer oder gleich b, sonst falsch
Weniger alsa < bRichtig wenn aist kleiner als b, sonst falsch
Weniger als oder gleicha <= bRichtig, wenn akleiner oder gleich b, sonst falsch

Logische Operatoren

Wir möchten vielleicht, dass ein bisschen Code ausgeführt wird, wenn etwas nicht stimmt oder wenn zwei Dinge wahr sind. Dafür haben wir logische Operatoren:

Name des BedienersVerwendungErgebnis
Nicht ( !)!(a == 3)Wahr , wenn aist nicht gleich 3
Und ( &&)a == 3 && b == 6True, wenn agleich 3 undb gleich 6 ist
Oder ( ||)a == 2 || b == 4True 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

While there's a bit more to it, this is the core of how booleans work and how the library operates. These two lines instruct the compiler to replace the word false with 0, and true with 1.