C Bedingte Anweisungen meistern: IF, IF-ELSE und verschachtelte IF-ELSE erklärt
Was ist eine bedingte Anweisung in C?
Bedingte Anweisungen in C werden verwendet, um Entscheidungen basierend auf Bedingungen zu treffen. Ohne Bedingungen werden Anweisungen sequenziell ausgeführt. Wenn Sie eine Bedingung für einen Block von Anweisungen setzen, kann der Ausführungsfluss basierend auf dem Ergebnis der ausgewerteten Bedingung ändern. Dieser Prozess wird als Entscheidungsfindung in „C“ bezeichnet.
In der C-Programmierung sind bedingte Anweisungen mit den folgenden zwei Konstrukten möglich:
- If-Anweisung
- If-Else-Anweisung
Dies wird auch als Verzweigung (Branching) bezeichnet, da das Programm entscheidet, welche Anweisung basierend auf dem Ergebnis der ausgewerteten Bedingung ausgeführt wird.
In diesem Tutorial lernen Sie:
- Was ist eine bedingte Anweisung?
- If-Anweisung
- Relationale Operatoren
- If-Else-Anweisung
- Bedingte Ausdrücke (Ternärer Operator)
- Verschachtelte If-Else-Anweisungen
- Verschachtelte Else-If-Anweisungen (Else-If-Leiter)
If-Anweisung
Eine der mächtigsten bedingten Anweisungen. Die If-Anweisung ist verantwortlich für die Änderung des Ausführungsflusses eines Programms. Sie wird immer mit einer Bedingung verwendet. Die Bedingung wird zuerst ausgewertet, bevor Anweisungen im If-Block ausgeführt werden. Die Syntax:
if (condition) instruction;
Die Bedingung ergibt entweder true (wahr) oder false (falsch). True ist immer ein Nicht-Null-Wert, false ist ein Wert, der Null enthält. Anweisungen können eine einzelne Instruktion oder ein Code-Block in geschweiften Klammern { } sein.
Das folgende Programm veranschaulicht die Verwendung des If-Konstrukts in C:
#include <stdio.h>
int main() {
int num1 = 1;
int num2 = 2;
if (num1 < num2) // Test-Bedingung
{
printf("num1 is smaller than num2");
}
return 0;
}
Ausgabe:
num1 is smaller than num2
- Im obigen Programm haben wir zwei Variablen num1, num2 mit den Werten 1, 2 initialisiert.
- Dann haben wir if mit einem Test-Ausdruck verwendet, um zu prüfen, welche Zahl kleiner und welche größer ist. Wir haben einen relationalen Ausdruck im if-Konstrukt verwendet. Da der Wert von num1 kleiner als num2 ist, wird die Bedingung zu true ausgewertet.
- Daher wird die Anweisung im If-Block ausgegeben. Danach geht die Kontrolle aus dem Block heraus und das Programm wird mit einem erfolgreichen Ergebnis beendet.
Relationale Operatoren
C hat sechs relationale Operatoren, die verwendet werden können, um einen booleschen Ausdruck für Entscheidungen und Bedingungsprüfungen zu formulieren, der true oder false zurückgibt:
<kleiner als<=kleiner oder gleich>größer als>=größer oder gleich==gleich!=ungleich
Beachten Sie, dass der Gleichheitstest (==) sich vom Zuweisungsoperator (=) unterscheidet, da dies eines der häufigsten Probleme ist, auf die Programmierer stoßen, wenn sie sie verwechseln.
Beispiel:
int x = 41;
x = x + 1;
if (x == 42) {
printf("You succeed!");
}
Ausgabe: You succeed
Beachten Sie, dass eine Bedingung, die zu einem Nicht-Null-Wert ausgewertet wird, als true betrachtet wird.
int present = 1;
if (present) printf("There is someone present in the classroom \n");
Ausgabe: There is someone present in the classroom
If-Else-Anweisung
Die If-Else-Anweisung ist eine erweiterte Version von If. Die allgemeine Form:
if (test-expression) {
// True-Block von Anweisungen
} else {
// False-Block von Anweisungen
}
// Anweisungen nach dem If-Block
In diesem Konstrukt wird, wenn der Wert des Test-Ausdrucks true ist, der True-Block ausgeführt. Wenn false, der False-Block. In jedem Fall wird die Kontrolle nach der Ausführung automatisch zu den Anweisungen außerhalb des If-Blocks übertragen.
Beispiel – Initialisieren einer Variable und Prüfen, ob der Wert kleiner oder größer als 10 ist:
#include <stdio.h>
int main() {
int num = 19;
if (num < 10) {
printf("The value is less than 10");
} else {
printf("The value is greater than 10");
}
return 0;
}
Ausgabe: The value is greater than 10
- Variable mit Wert 19 initialisiert. Prüfen, ob die Zahl größer oder kleiner als 10 ist.
- Bedingung
num < 10bereitgestellt, da wir mit 10 vergleichen. - Der erste Block ist immer der True-Block: wenn Test-Ausdruck true, wird If-Block ausgeführt.
- Der zweite Block ist der Else-Block: wird ausgeführt, wenn Test-Ausdruck false wird. Da num > 10, wird Else-Block ausgeführt: „The value is greater than 10“.
In C können wir mehrere If-Else-Konstrukte ineinander verschachteln, was als Nesting von If-Else-Anweisungen bezeichnet wird.
Bedingte Ausdrücke (Ternärer Operator)
Eine andere Art, If-Else auszudrücken, ist der ?: Operator. In einem bedingten Ausdruck hat der ?: Operator nur eine Anweisung für If und Else.
Beispiel:
#include <stdio.h>
int main() {
int y;
int x = 2;
y = (x >= 6) ? 6 : x; /* Äquivalent zu: if (x >= 5) y = 5; else y = x; */
printf("y =%d ", y);
return 0;
}
Ausgabe: y =2
Verschachtelte If-Else-Anweisungen
Wenn eine Reihe von Entscheidungen erforderlich ist, wird verschachteltes If-Else verwendet. Nesting bedeutet, ein If-Else-Konstrukt innerhalb eines anderen zu verwenden.
Programm zur Veranschaulichung:
#include <stdio.h>
int main() {
int num = 1;
if (num < 10) {
if (num == 1) {
printf("The value is:%d\n", num);
} else {
printf("The value is greater than 1");
}
} else {
printf("The value is greater than 10");
}
return 0;
}
Ausgabe: The value is:1
- Variable num mit Wert 1 deklariert. Then If-Else-Konstrukt verwendet.
- Im äußeren If-Else prüft die Bedingung, ob Zahl < 10. Wenn true, wird innerer Block ausgeführt. Hier ist Bedingung true.
- Im inneren Block prüft eine weitere Bedingung, ob Variable Wert 1 enthält. Wenn true, If-Block, sonst Else-Block. Hier true, Wert wird ausgegeben.
- Programm gibt Variablenwert aus und beendet sich erfolgreich.
Probieren Sie, den Wert der Variable zu ändern, und beobachten Sie das Verhalten.
HINWEIS: Bei verschachtelten If-Else-Konstrukten muss man auf Einrückung achten, da mehrere If-Else involviert sind und es schwierig wird, einzelne Konstrukte zu identifizieren. Korrekte Einrückung macht das Programm lesbar.
Verschachtelte Else-If-Anweisungen (Else-If-Leiter)
Verschachteltes Else-If wird verwendet, wenn Mehrwege-Entscheidungen erforderlich sind.
Die allgemeine Syntax für Else-If-Leitern in C:
if (test-expression 1) {
statement1;
} else if (test-expression 2) {
statement2;
} else if (test-expression 3) {
statement3;
} else if (test-expression n) {
statement n;
} else {
default;
}
statement x;
Diese Struktur nennt man Else-If-Leiter. Die Test-Ausdrücke werden von oben nach unten ausgewertet. Sobald ein true Test-Ausdruck gefunden wird, wird die zugehörige Anweisung ausgeführt. Wenn alle n Test-Ausdrücke false werden, wird der Standard-Else-Block ausgeführt.
Beispiel – Notenbewertung:
#include <stdio.h>
int main() {
int marks = 83;
if (marks > 75) {
printf("First class");
} else if (marks > 65) {
printf("Second class");
} else if (marks > 55) {
printf("Third class");
} else {
printf("Fourth class");
}
return 0;
}
Ausgabe: First class
- Variable marks initialisiert. Im Else-If-Leiter verschiedene Bedingungen bereitgestellt.
- Wert von marks wird mit erster Bedingung verglichen; da true, wird zugehörige Anweisung ausgegeben.
- Falls erste Bedingung false, Vergleich mit zweiter Bedingung.
- Prozess geht so lange, bis alle Ausdrücke ausgewertet sind, sonst geht Kontrolle aus Leiter raus und Default wird ausgegeben.
Versuchen Sie, den Wert zu ändern und die Ausgabeänderung zu beobachten.
Zusammenfassung
- Entscheidungsfindung oder Verzweigungs-Anweisungen wählen einen Pfad basierend auf dem Ergebnis des ausgewerteten Ausdrucks.
- Auch Kontroll-Anweisungen genannt, da sie den Ausführungsfluss eines Programms steuern.
- C bietet if, if-else Konstrukte für Entscheidungsfindung.
- Wir können If-Else ineinander verschachteln, wenn mehrere Pfade getestet werden müssen.
- Else-If-Leiter wird verwendet, wenn verschiedene Wege basierend auf dem Ausdrucksergebnis geprüft werden müssen.
C Sprache
- C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
- Bedingte Logik in C# meistern: If, If-Else, If-ElseIf und verschachtelte If-Anweisungen
- C++-Bedingungsanweisungen meistern: if, if...else und verschachteltes if...else erklärt
- C Bedingte Anweisungen meistern: If, Else und mehr
- Java if…else meistern: Kontrollfluss erklärt
- C++ Operatoren erklärt: Typen, Beispiele und Beispielprogramme
- C++ switch‑case meistern: Syntax, Einsatz und Praxisbeispiele
- C++ Structs erklärt mit praktischem Beispiel
- std::list in C++ meistern: Syntax, Funktionen & praktische Beispiele
- C++ Struct vs. Class: Wichtige Unterschiede, Syntax und beste Anwendungsfälle