Hallo,
prinzipiell ist mir das if-else Kontrukt schon klar. Nur was passiert
bei folgenden Anweisungen:
if(irgendwas)
{
tu was;
}
if(was anderes)
{
tu was anderes;
}
else
{
mach ganz was anderes;
}
Würde sich das else nun nur auf das darüberliegende if auswirken, und
die erste if-Anweisung einfach prüfend immer durchlaufen werden ?
Also wie verhält es sich quasi wenn ich nciht if - elseif - else sonder
if - if - if - else mache ?
Vielen Dank für eure Hilfe
Christian
Das else bezieht sich immer auf das letzte if. Um der besseren
Lesbarkeit willen arbeitet man mit Klammerung, auch wenn es nicht immer
nötig wäre.
Aus
if - if - if - else
wird
if { if { if {} else {}}}
so wie in deinem beispiel bezieht sich das else auf die letzte if
abfrage. ansonsten kommt es auf die klemmerung der verzweigungen an
>Aus>if - if - if - else>wird>if { if { if {} else {}}}
ist nicht korrekt. da die verzweigungen alle beinhalten, dass die vorige
bedingung erfüllt ist. hier liegt jedoch eine mehrfachverzweigung vor,
konkret würde man das mit SWITCH lösen
Der-Ex-Bundesschnäppchenjäger schrieb:> Würde sich das else nun nur auf das darüberliegende if auswirken, und> die erste if-Anweisung einfach prüfend immer durchlaufen werden ?
So ist es. Es sei denn du setzt deine Klemmern anderst und
verschachtelst es weiter.
Verstehe mich bitte recht.
Das sind absolute Grundlagen die man in jedem C-Buch nachlesen kann.
Schau bitte dort nach. Und wenn Du da etwas nicht verstehst, erklären
wir es Dir gerne. Aber wir sind hier keine Vorleser. OK? :-)
Noname schrieb:> Verstehe mich bitte recht.> Das sind absolute Grundlagen die man in jedem C-Buch nachlesen kann.> Schau bitte dort nach. Und wenn Du da etwas nicht verstehst, erklären> wir es Dir gerne. Aber wir sind hier keine Vorleser. OK? :-)
Ich werde sicher nicht den Noname vorher fragen wo und wann ich im
Internet was fragen werde. OK? :-)
Der-Ex-Bundesschnäppchenjäger schrieb:> Es bleibt aber trotzdem dabei, daß (ohne Klammerung) sich das else auf> das jeweils letzte if bezieht ?
Abhängig der Klammern:
1
if(eins)
2
{
3
if(zwei)
4
{
5
if(drei)
6
{
7
}
8
}
9
else
10
{
11
}
12
}
hier bezieht sich das else auf das zweite if.
Noname schrieb:> Das sind absolute Grundlagen die man in jedem C-Buch nachlesen kann.> Schau bitte dort nach. Und wenn Du da etwas nicht verstehst, erklären> wir es Dir gerne. Aber wir sind hier keine Vorleser. OK? :-)
Nun stell dich mal nicht so an... Die zwei Zeilen werden dich nicht
umbringen bzw. musst du ja nichts dazu sagen...
Ingo
>Ich werde sicher nicht den Noname vorher fragen wo und wann ich im>Internet was fragen werde. OK? :-)
Das sollst Du sicher nicht. Du bist etwas empfindlicher. OK. Tut mir
leid.
Was ich Dir sagen wollte: Wir helfen Dir gerne Probleme zu lösen. Aber
Grundlagen die Du Dir selbst erfragen kannst, lies bitte selbst nach. Es
ist unbefriedigen Dir solche Trivialinformationen zu vorzulesen, wenn Du
sie Dir selbst verschaffen kannst.
Das ist alles und war durchaus freundlich gemeint. OK? :-)
Wie mein Vorredner schon gesagt hat. Wenn dich das hier stört, dann
schau Dir halt z.B. die Bundespräsidentenwahl an und hör auf dich über
Fragen anderer Leute aufzuregen. Schade um die Bytes, ehrlich. OK? :-)
Keiner zwingt einen im Internet auf Fragen anderer irgendetwas zu
schreiben, geschweige denn die Fragen überhaupt zu lesen. Genieße die
Freiheit einfach andere zu ignorieren. Gegen die Leute, die ich einfach
allergisch bin, sind diejenigen die mit dem virtuellen Zeigefinger durch
die Foren wischen. Die braucht kein Mensch. Genieß das schöne Wetter.
Es geht nicht darum, das Du mich störst. Du bist mir egal. Warum Du
vermutest das ich mich wegen Dir aufrege, weisst Du besser als ich.
Aber Du wirst langfristig besser fahren, wenn Du selbst Dich um Wissen
bemühst. Da Du das in diesem noch sehr simplen Fall nicht getan hast,
schien mir ein Ratschlag angemessen.
Nun. Es ist offensichtlich das mein Rat von Dir nicht gewünscht wird.
Also: Viel Erfolg noch.
Für derartige Probleme ist ein einfacher Test das Sinnvollste.
Gerade bei Verschachtelungen wenn es (später) unübersichtlicher wird.
Dabei war dein Progamm schon fast fertig.
Philipp Klostermann schrieb:> Das else bezieht sich immer auf das letzte if. Um der besseren> Lesbarkeit willen arbeitet man mit Klammerung, auch wenn es nicht immer> nötig wäre.>> Aus> if - if - if - else> wird> if { if { if {} else {}}}
Das ist natürlich HUMBUG !!!
Grundsätzlich bezeichnen {} immer einen Anweisungsblock. In den wird
natürlich nur gesprungen, wenn die Bedingung erfüllt ist. Es ist ein
massiver Unterschied zwischen
if(x){tue A;}
if(y){tue B;}
else {tue C;}
und
if(...){
tue A;
if(...){tue B}
else {tue C;}
}
Das else bezieht sich immer auf das letzte native "if".
Die meisten Programmierer arbeiten ohne "else if" und nur mit "else" und
"if".
Lehrmann Michael schrieb:> Das ist natürlich HUMBUG !!!
Um es nicht nur für den Einsteiger verständlich, sondern auch für den
Akademiker halbwegs korrekt zu machen, füge ich noch in Prosa die
Einschränkung hinzu, die sich eigentlich von selbst ergibt, wobei ich
zugunsten der allgemeinen Verständlichkeit auf den Begriff "nativ"
verzichte:
Das else bezieht sich immer auf das letzte mögliche if.
Dass Du auch meinen zweiten Satz mit in das mit "HUMBUG" kommentierte
Zitat mit aufgenommen hast, führe ich mal darauf zurück, dass wir die
recht unpräzise Angabe "if - if - if - else" unterschiedlich
interpretiert haben.
Ich habe das als "if(x) if(y) if(z) blah; else blubb;" interpretiert,
und ich schätze mal, Du hast es als "if(x) blubber; if(y) hurz; if(x)
blah; else blubb;" interpretiert.
Die Bedeutung von {} dürfte uns beiden hinlänglich bekannt sein, ebenso
die Praxis, zur besseren Lesbarkeit bei if, while, do und for auch
einzelne Anweisungen als Anweisungsblöcke zu kodieren.
Unterschiedlicher Auffassung scheinen wir nur bezüglich der Position der
öffnenden "{" zu sein. Ich mache es halt gerne in die nächste Zeile
unter das "if", Du machst es (anscheinend) gerne rechts daneben. Beide
Stile haben ihre Anhänger, es bleibt eine Glaubensfrage.
Schönen Restsonntag!
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.