Switch case Anweisung

OP #1508145
Lesenswert?
• ▲
▼
Hallo Friendzzz,

mal eine Frage:
Wird in diesem Fall auch die case Anweisung abgebrochen, auch wenn das 
"break" in der if-Anweisung steht? Oder geht das gar nicht, oder wird 
die If-Anweisung abgebrochen?

  switch(modus)
    {
    case 0 :
      If (a=3)
                        {
           break;
                        }
                        c=3;


usw.


Danke ....
Eure Marie93
Gast #1508314
Lesenswert?
• ▲
▼
> Deine Quellcodeformatierung (Einrückung) ist grässlich.

Er hat zum Einrücken teilweise Leerzeichen und teilweise Tabs verwendet
und die Tablänge im Editor auf 2 eingestellt. Die Forensoftware wandelt
aber offensichtlich 1 Tab in 8 Leerzeichen um.

Deswegen: Wenn man schon Tabs zum Einrücken benutzt, sollte man dies
konsequent in jeder Zeile so machen.

Weniger Probleme hat man aber, wenn man auf Tabs im Quellcode komplett
verzichtet und stattdessen Leerzeichen verwendet. Leerzeichen sehen im
Gegensatz zu Tabs in jedem Betriebssystem, in jedem Editor, in jedem
Browser und auf jedem Drucker gleich aus.

Die meisten Editoren und IDEs können so konfiguriert werden, dass ein
Tab direkt bei der Eingabe in die gewünschte Anzahl von Leerzeichen
umgesetzt wird, so dass man auch keine Komforteinbußen bei der Eingabe
hat.
Gast #1508625
Lesenswert?
• ▲
▼
yalu schrieb:
>
> Weniger Probleme hat man aber, wenn man auf Tabs im Quellcode komplett
> verzichtet und stattdessen Leerzeichen verwendet. Leerzeichen sehen im
> Gegensatz zu Tabs in jedem Betriebssystem, in jedem Editor, in jedem
> Browser und auf jedem Drucker gleich aus.
>
> Die meisten Editoren und IDEs können so konfiguriert werden, dass ein
> Tab direkt bei der Eingabe in die gewünschte Anzahl von Leerzeichen
> umgesetzt wird, so dass man auch keine Komforteinbußen bei der Eingabe
> hat.

Meine Meinung. Bin ja mal gespannt wie lang es zur Tabs vs. Leerzeichen 
Diskussion dauert :)
#1508633
Lesenswert?
• ▲
▼
Rufus t. Firefly schrieb:
> Eine "if-Anweisung" kann nicht abgebrochen werden, daher bezieht sich
> das break hier auf das case-Label.


anstelle eines breaks könnte man continue verwenden, diese beendet die 
momentane Schleife und fährt am am Schluss der Schleife weiter...

Das Beispiel hab ich aus einem Buch:
[c]
int main (){
  int loop = 1;
  do{
    if(!(loop%10))
      continue;
    printf("%lf\n",pow(loop,2);
    loop ++;
  }while(loop <= 100);
return 0;
}
[c/]
#1508668
Lesenswert?
• ▲
▼
Patrick B. schrieb:
> Das Beispiel hab ich aus einem Buch:
> [c]
> int main (){
>   int loop = 1;
>   do{
>     if(!(loop%10))
>       continue;
>     printf("%lf\n",pow(loop,2);
>     loop ++;
>   }while(loop <= 100);
> return 0;
> }
> [c/]

Dann würde ich das Buch wegwerfen...
Was passiert wohl, wenn loop == 10 ist (SCNR).
#1509150
Lesenswert?
• ▲
▼
ups,
zitieren soll gelehrnt sein...

> Der Fehler liegt hier darin, dass durch die "continue"-Anweisung auch die
> Reinitialisierung der Schleifenvariablen übersprungen wird und sich daher
> nach dem ersten Auftreten der "continue"-Anweisung an dem Wert der
> Schleifenvariablen und der Auswertung der Schleifenbedingung nichts
> mehr ändert.

Schleifen abbrechen:
"continue"    Beendet die aktuelle Schleifeniternation
"break"       Beendet die ganze Schleife (nicht für reguläres Verlassen)
"return"      Beendet nicht nur die Schleife, in der die Anweisung 
aufgerufen
              wird, sondern die ganze Funktion
"exit(int)"   Beendet das Programm

Arc Net schrieb:
> (SCNR).
NVM
#1509305
Lesenswert?
• ▲
▼
Patrick B. schrieb:
> ...
> Schleifen abbrechen:
> "continue"    Beendet die aktuelle Schleifeniternation
> "break"       Beendet die ganze Schleife (nicht für reguläres Verlassen)

... oder das aktuelle switch, je nachdem wo es steht.

> "return"      Beendet nicht nur die Schleife, in der die Anweisung
> aufgerufen

auch ohne Schleife

>               wird, sondern die ganze Funktion
> "exit(int)"   Beendet das Programm

... , lässt aber vorher alle mit atexit() installierten Funktionen
ausführen, offene Dateien schließen etc..

abort() beendet ein Programm dagegen umgehend ohne Firlefanz.

> ...
Gast #1509315
Lesenswert?
• ▲
▼
Patrick B. schrieb:
> ups,
> zitieren soll gelehrnt sein...
>
>> Der Fehler liegt hier darin, dass durch die "continue"-Anweisung auch die
>> Reinitialisierung der Schleifenvariablen übersprungen wird und sich daher
>> nach dem ersten Auftreten der "continue"-Anweisung an dem Wert der
>> Schleifenvariablen und der Auswertung der Schleifenbedingung nichts
>> mehr ändert.

Da sollte man aber vorsichtig mit sein. Hier im Beispil ist das korrekt, 
bei einer for-Schleife aber wird durch continue keineswegs die 
Reinitialisierung übersprungen...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren