if - else verschachtelung

maniacquaker

Grünschnabel
Hallo,
ich musste gerade feststellen, dass folgendercode hingegen meiner erwartungen x=1 ergibt:

int x=1,y=0;

if(y<0)
if(y<5) x=5;
else x=10;

verstehe das einfach nicht. ich dachte immer, dass nur die nächste anweisung in den block kommt, wenn man keine geschweiften klammern setzt. deshalb interpretiere ich den code folgendermaßen:

int x=1,y=0;

if(y<0){
if(y<5){
x=5;
}
}

else x=10;


so würde das else ja ausgeführt werden also warum genau wird es nicht ausgeführt?
 
hab mir die mühe gemacht und das mal im Visual Debugt,
das else gehört noch zu er inneren Abfrage so wie unten halt
deshalb arbeite ich auch meist mit Klammern :-)
Code:
int x=1,y=0;
if(y<0)
{
if(y<5) x=5;
else x=10;
}
 
Klammern setzen ist in jedem Falle immer besser, dann lässt sich der Code gleich besser nachvollziehen.
x=1 macht Sinn, da das innere if (mit dem dazugehörigen else) nie erreicht wird.
 
ja natürlich klammern setzen ist wichtig aber der code stand so in einem übungsbuch und die frage war "welchen wert hat x nach diesem abschnitt" .

im standard steht, dass ein else sich immer auf das letzte if bezieht, falls das lexikalisch möglich ist.

gruß
Felix
 
Zurück