0 Pluspunkte 0 Minuspunkte

Ich habe diesen Code

#include <stdio.h>

int main() {
    
    char operation;
    int n1, n2;

    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operation);
    printf("Enter two operands: ");
    scanf("%d %d",&n1, &n2);

    switch(operation)
    {
        case '+':
            printf("%d + %d = %d",n1, n2, n1+n2);

        case '-':
            printf("%d - %d = %d",n1, n2, n1-n2);

        case '*':
            printf("%d * %d = %d",n1, n2, n1*n2);

        case '/':
            printf("%d / %d = %d",n1, n2, n1/n2);

        default:
            break;
    }

    return 0;
    
}

Aber wenn ich z.B + eingebe wird alles ab + ausgeführt. Wenn ich - als Operand eingebe wird alles ab - ausgeführt also immer alles was danach kommt. Was ist der Fehler?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Es fehlt der break nach jedem case. Ohne break Anweisung wird das Programm nach einem Treffer in der switch Anweisung weiter die nachfolgenden Fälle ausführen, bis es auf ein break stößt oder die switch-Anweisung endet.

#include <stdio.h>

int main() {
    
    char operation;
    int n1, n2;

    printf("Enter an operator (+, -, *, /): ");
    scanf(" %c", &operation); // Beachten Sie das Leerzeichen vor %c, um Zeilenumbrüche zu überspringen
    printf("Enter two operands: ");
    scanf("%d %d", &n1, &n2);

    switch(operation)
    {
        case '+':
            printf("%d + %d = %d", n1, n2, n1 + n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '-':
            printf("%d - %d = %d", n1, n2, n1 - n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '*':
            printf("%d * %d = %d", n1, n2, n1 * n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '/':
            printf("%d / %d = %d", n1, n2, n1 / n2);
            break; // Hinzugefügt, um den Fall zu beenden

        default:
            printf("Error! operator is not correct");
    }

    return 0;
}
von