if abfrage durchfallen

Moderator (Firma: Titel) Persönliche Seite #4101603
Lesenswert?
• ▲
▼
iffff schrieb:
> Frage: Werden beide Anweisungen in den if-Abfragen direkt nacheinander
> ausgeführt?
Sieh dir mal diesen Code an:
1
a=1;
2

3
if(a==1)
4
{
5
   ... // aa
6
}
7
else if(a==2)
8
{
9
   ... // bb
10
}
Frage: wird aa oder bb ausgeführt?
Was ist der Trick beim entweder-oder (aka if-else)?

Frage: was passiert im folgenden Code?
1
a=1;
2

3
if(a==1)
4
{
5
  a=2;
6
}
7

8
if(a==2)
9
{
10
  ...
11
}

iffff schrieb:
> a ist nur initial bei 1
Es wird jedesmal vor der ersten if-Abfrage wieder mit 1 beschrieben...
Oder ist der gepostete Code noch nicht komplett?
Gast #4101742
Lesenswert?
• ▲
▼
Ich liebe diese Board, denn
1
if(ihavenobookaboutc){
2
  CallMikrocontrollerNetHelp();
3
} else if (Idontknowaboutgoogle) {
4
  CallMikrocontrollerNetHelp();
5
} else if (iamatroll) {
6
  CallMikrocontrollerNetHelp();
7
} else {
8
  CallMikrocontrollerNetHelp();
9
}
#4101778
Lesenswert?
• ▲
▼
iffff schrieb:
> Frage:
> Werden beide Anweisungen in den if-Abfragen direkt nacheinander
> ausgeführt?

Ganz klares Nein.
1
a=1;
2
if (a == 1) {
3
    a = 2;
4
} else if (a == 2) {
5
    ...
6
}

Formal müsste man es so schreiben, und da sieht man auch sofort, das man 
nie zum zweiten if kommt, da der else-zweig niemals ausgeführt wird:
1
a=1;
2
if (a == 1) {
3
    a = 2;
4
} else {
5
    if (a == 2) {
6
        ...
7
    }
8
}

Da aber das if bereits einen Block kapselt, wird in der Regel die 
geschweifte Klammer bei einem else-if weggelassen.

In C kann man die geschweiften Klammern weglassen, wenn der Block nur 
einen Befehl umfasst:
1
a=1;
2
if (a == 1) a = 2; else if (a == 2) foobar();

Ich persönlich finde es furchtbar wenn jemand bei if/else Blöcken die 
Klammern weglasst. Auch wenn der Code korrekt eingerückt ist, ist er 
meiner Meinung mit Klammern besser zu lesen.

Nur bei einem else-if sollte man sie weglassen.
Gast #4101812
Lesenswert?
• ▲
▼
Lieber Threadersteller, bitte nicht böse sein, aber wenn man sich mit 
Programmierung auseinandersetzt, sollte man auch eine 
Entwicklungsoberfläche installieren. Einmal durch den Code im 
Single-Step hilft für das Verständnis.

Fahradfahren lernt man auch nicht durch reine Theorie...

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.