Blockbildungen



  • Mein Buch sagt mir wenn ich in einer Schleife mehr als eine Anweisung habe, brauche ich einen Block {}
    alles klar,
    Jemand sagte mir das in einer If Anweisung das gleiche gilt aber in meinem Buch existiert folgendes Beispiel:

    if( n > 0 )
    if( n%2 == 1 )
    cout << "Positive und ungerade Zahl";
    else
    cout << "Positive und gerade Zahl";
    

    Wenn if( n > 0 ) true ist, wird die nachfolgende if abfrag und danach etwas ausgegeben, aber sind das nicht schon 2 Anweisungen ?
    also if und cout ?
    und warum existiert dort dann kein block.



  • Nö, das kann man problemlos verschachteln (da gibt es aber laut Standard limits, irgendwie 256 oder so, zu faul zum nachschlagen).

    Achtung: Dein Beispiel ist dasselbe wie

    if( n > 0 )
    {
        if( n%2 == 1 )
            cout << "Positive und ungerade Zahl";
        else
            cout << "Positive und gerade Zahl";
    }
    


  • Das es dasselbe ist, wie das was du geschrieben hast ist mir bewusst.
    Aber wieso muss dort kein Block gebildet werden es sind doch mehr als 2 Anweisungen in if Abfrage..



  • Fragözeichen schrieb:

    Aber wieso muss dort kein Block gebildet werden es sind doch mehr als 2 Anweisungen in if Abfrage..

    In welcher? In der ersten? Das sind keine Anweisungen. Das sind If/Else-Statements. Davon koennen soviele wie du willst (wieder: der Standard definiert da limits) in eine einziges anderes If-Statement, ohne Brackets darum zu setzen. Mach da aber lieber ueberall Brackets, sonst verwirrt das ab einem bestimmten Punkt.



  • Danke 🙂



  • stichwort: dangling else



  • Sone schrieb:

    In welcher? In der ersten? Das sind keine Anweisungen. Das sind If/Else-Statements.

    Das ist jetzt nicht dein Ernst, oder? Übersetze bitte mal Statement ins Deutsche.

    Fragözeichen: Du hast zwar im if- und else-Teil zwei Anweisungen, aber das ganze if-Konstrukt if(cond) statement; else statement zusammen ergibt wieder eine (zusammengesetzte) Anweisung. Deshalb steht das Codebeispiel nicht im Widerspruch zum Buch.


Anmelden zum Antworten