C Verzweigungen und Logische Operatoren


C Verzweigungen und Logische Operatoren


Im Folgenden lernen wir einen Mechanismus kennen mit Bedingungen umzugehen. Das folgende Programm berechnet anhand von Umsatz und Kosten die Einnahmen und gibt unterschiedliche Nachrichten aus, je nachdem ob Gewinn oder Verlust gemacht wurde:


#include <stdio.h>

int main(void)
{
       double revenue;            // umsatz
       double cost;        // kosten

       printf("Geben Sie den Umsatz an:\n");
       scanf("%lf", &revenue);

       printf("Geben Sie die Kosten an:\n");
       scanf("%lf", &cost);

       double profit = revenue - cost; // profit

       if(profit > 0)
       {
             printf("YAY Profit");
       }
       else if (profit == 0)
       {
             printf("-.-");
       }
       else
       {
             printf("500 € Ausgaben für Designer Schuhe?!");
       }

       getchar();
       return 0;
}

Nur wenn die Bedingung if(earnings > 0) erfüllt ist, werden die Befehle im if-Block ausgeführt. Optional kann man auch den Gegenfall betrachten, indem man else anfügt, mit else if kann dieser genauer verfeinert werden.
Ausgabe if(profit > 0)

Wird nach der if-Bedingung nur ein einziger Befehl ausgeführt, kann man die Klammern auch weglassen. Wir hätten auch

       if(profit > 0)
             printf("YAY Profit");
       else if (profit == 0)
             printf("-.-");
       else
             printf("500 € Ausgaben für Designer Schuhe?!");

oder

       if(profit > 0) printf("YAY Profit");
       else if (profit == 0) printf("-.-");
       else printf("500 € Ausgaben für Designer Schuhe?!");

schreiben können.

Bedingungen lassen sich über Logische Operatoren wie ‚und‘, ‚oder‘, ‚nicht‘, ‚entweder oder‘ verknüpfen:

       if(0 < a &&  a < 10)        // 0 < a und a < 10
      
       if(0 <= a || a < 10)        // 0 <= a oder a < 10

       if(0 < a  ^ a < 10)        // entweder 0 < a oder a < 10

       if(!(0 == a))              // nicht (0 = a)



Ähnlich zu der if-Bedingung gibt es switch cases, also Fallunterscheidungen:

#include <stdio.h>

int main(void)
{
       int n;
       printf("Gib eine Zahl ein:\n");
       scanf("%d", &n);

       switch (n)
       {
       case 0:
             printf("n ist null");
             break;
       case 1:
             printf("n ist eins");
       case 2:
             printf(" ... oder zwei ");
       case 3:
             printf(" ... oder drei ");
             break;
       default:
             printf("n ist irgendetwas anderes");
             break;
       }

       getchar();  
       return 0;
}

Falltrough bei switch-cases


Mit switch (n) wird die Variable angegeben, zwischen deren Werte unterschieden werden soll. Hinter dem Wort case wird der Fall definiert, der betrachtet werden soll. Lassen wir break weg, wird der nächste Fall ebenfalls betrachtet. Unter default werden alle Fälle abgedeckt, die nicht explizit angegeben wurden.

Keine Kommentare:

Kommentar veröffentlichen

Inhalt