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
Vielen Dank, es ist der Hammer wie schnell man hier immer Antworten kriegt. Gruß Christian
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.
Aha, nochmal ein Edit. Es bleibt aber trotzdem dabei, daß (ohne Klammerung) sich das else auf das jeweils letzte if bezieht ?
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.
Der-Ex-Bundesschnäppchenjäger schrieb: > Genieß das schöne Wetter. Also bei mir lascht es wie verrückt...
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.
1 | #include "stdio.h" |
2 | |
3 | #define TRUE 1
|
4 | #define FALSE 0
|
5 | |
6 | int main(void) |
7 | {
|
8 | int irgendwas=TRUE; |
9 | int was_anderes=FALSE; |
10 | |
11 | printf("IF Test:\n"); |
12 | |
13 | if(irgendwas) |
14 | {
|
15 | printf("tu was\n"); |
16 | }
|
17 | |
18 | if(was_anderes) |
19 | {
|
20 | printf("tu was anderes\n"); |
21 | }
|
22 | else
|
23 | {
|
24 | printf("mach ganz was anderes\n"); |
25 | }
|
26 | |
27 | return 0; |
28 | }
|
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!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.