Verzweigungen
if
if
Die Syntax eines if
-Statements sieht folgendermassen aus:
if (test expression)
{
//code
}
Das if-statement
evaluiert den Testausdruck in den Klammern ()
.
Wenn der Testausdruck tu
true
ausgewertet wird, werden die Anweisungen innerhalb des Körpers vonif
ausgeführt.Wenn der Testausdruck tu
false
ausgewertet wird, werden die Anweisungen innerhalb des Körpers vonif
nicht ausgeführt.
Beispiel
#include <stdio.h>
int main() {
int number;
printf("Enter an integer: ");
scanf("%d", &number);
if (number < 0) {
printf("You entered %d.\n", number);
}
return 0;
}
Hier wird die Anweisung im if
-Statement nur ausgeführt, wenn der User eine negative Zahl eingibt. Ansonsten wird das Programm weiter normal ausgeführt.
if...else
if...else
Das if
-Statement hat noch einen optionalen else
Block.
if (test expression) {
// run code if test expression is true
}
else {
// run code if test expression is false
}
Wenn der Testausdruck als true
ausgewertet wird,
werden Anweisungen innerhalb des Körpers von
if
ausgeführt.werden die Anweisungen innerhalb des Körpers von
else
nicht ausgeführt.
Wenn der Testausdruck als false
ausgewertet wird,
werden die Anweisungen im Körper von
else
ausgeführtwerden Anweisungen innerhalb des Körpers von
if
nicht ausgeführt.
Beispiel
#include <stdio.h>
int main() {
int number;
printf("Enter an integer: ");
scanf("%d", &number);
if (number % 2 == 0) {
printf("%d is an even integer.", number);
}
else {
printf("%d is an odd integer.", number);
}
return 0;
}
Wenn der User eine gerade Nummer eingibt, werden die Anweisungen im if
-Block ausgeführt. Wenn es irgendeine andere Zahl oder sonstiges ist, werden die Anweisungen im else
-Block ausgeführt.
if...else
-Ladder
if...else
-LadderDie if...else
-Ladder erlaubt es einem eine Variable oder ähnliches auf mehrere Werte zu prüfen.
if (test expression1) {
// statement(s)
}
else if(test expression2) {
// statement(s)
}
else if (test expression3) {
// statement(s)
}
.
.
else {
// statement(s)
}
Beispiel
#include <stdio.h>
int main() {
int number1, number2;
printf("Enter two integers: ");
scanf("%d %d", &number1, &number2);
if (number1 == number2) {
printf("%d = %d", number1, number2);
}
else if (number1 > number2) {
printf("%d > %d", number1, number2);
}
else {
printf("%d < %d", number1, number2);
}
return 0;
}
Switch
Mit der switch
-Anweisungen können wir einen Codeblock unter mehreren Alternativen ausführen. Dasselbe ist auch mit einer if..else ladder
möglich. Die Syntax der switch
-Anweisung ist jedoch deutlich kompakter und einfacher zu lesen bzw. zu schreiben.
switch (expression)
{
case constant1:
// statements
break;
case constant2:
// statements
break;
.
.
.
default:
// default statements
}
Die expression
wird einmal ausgewertet und mit den Werten der einzelnen case
verglichen.
Gibt es eine Übereinstimmung, werden die entsprechenden Anweisungen nach dem übereinstimmenden Label ausgeführt. Ist der Wert des Ausdrucks beispielsweise gleich der
constant2
, werden die Anweisungen nach caseconstant2:
ausgeführt, bis einbreak
auftritt.Wenn es keine Übereinstimmung gibt, werden die Standardanweisungen ausgeführt.
Wenn wir die
break
-Anweisung nicht verwenden, werden alle Anweisungen nach dem entsprechenden Label ebenfalls ausgeführt.Der
default
Wert in einemswitch
-Statement ist optional.
Beispiel
#include <stdio.h>
int main()
{
char operation;
double n1, n2;
printf("Enter an operator (+, -, *, /): ");
scanf("%c", &operation);
printf("Enter two operands: ");
scanf("%lf %lf", &n1, &n2);
switch (operation)
{
case '+':
printf("%.1lf + %.1lf = %.1lf", n1, n2, n1 + n2);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf", n1, n2, n1 - n2);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf", n1, n2, n1 * n2);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf", n1, n2, n1 / n2);
break;
// operator doesn't match any case constant +, -, *, /
default:
printf("Error! Operator is not correct");
}
return 0;
}
Zuletzt aktualisiert
War das hilfreich?