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 statementzusammen ergibt wieder eine (zusammengesetzte) Anweisung. Deshalb steht das Codebeispiel nicht im Widerspruch zum Buch.