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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.