Verzweigungen

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 von if ausgeführt.

  • Wenn der Testausdruck tu false ausgewertet wird, werden die 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 < 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

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ührt

  • werden 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

Die 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 case constant2: ausgeführt, bis ein break auftritt.

  • Wenn es keine Übereinstimmung gibt, werden die Standardanweisungen ausgeführt.

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?