Warum ergibt das False??
-
Nehmen wir an X hat den Wert 7 !
x++ == 8 || x==7
Warum ergibt das False?? Ich verstehe das nicht...
x wird um eins erhöt und ist identisch mit 8, x hat den Wert 7, ist also identisch mit 7. Warum ist das Ergebnis False?
-
x++ == 8
x++ erhoeht x zwar um eins, gibt aber den vorherigen Wert zurueck (++x waere das gesuchte). Es wird also 7 zurueckgegeben.
d.h dieser Block wird jetzt auch ausgeführt:
x==7
hier hat x dann aber die 8. Damit ist das auch false und der ganze Ausdruck wird false.
Gruss,
DeSoVoDaMu
-
Siege schrieb:
x wird um eins erhöt und ist identisch mit 8
Nein. Der Postinkrementoperator gibt den "alten" Wert zurück, in diesem Fall 7.
-
Siege schrieb:
Nehmen wir an X hat den Wert 7 !
x++ == 8 || x==7
Warum ergibt das False?? Ich verstehe das nicht...
x wird um eins erhöt und ist identisch mit 8, x hat den Wert 7, ist also identisch mit 7. Warum ist das Ergebnis False?
löl zuerst:
x++ == 8
x++ gibt 7 zurück und erhöht dann x auf 8. Dieser Vergleich ist also false.dann:
x == 7
hier ist x bereits 8, also auch false.<edit> lol 3posts in 15sec </edit>
-
jep alle 3 richtig
ausserdem gibt das NICHTS urück
wo kein if da keine abfrage! also soviel mühe sollte man sich schon geben
-
Danke für die Hilfe... Dass x nun den Wert 8 hat und damit x==7 false ist habe ich mir schon gedacht, ich war mir aber nicht 100 % sicher.
Wow mit dem ++x und x++ muss man wirklich aufpassen, ich werde mir später nochmal die FAQ zu inkement und dekrement anschauen.

-
Siege schrieb:
Wow mit dem ++x und x++ muss man wirklich aufpassen, ...

Vor Allem sollte man darauf achten, in Oder-Ausdrücken keine Zuweisungen, Funktionsaufrufe oder dergleichen zu machen. Denn wenn der erste Ausdruck (keine Ahnung, ob die Auswertungsreihenfolge von links nach rechts standardisiert ist) wahr ist, wird der andere gar nicht erst ausgewertet.
-
von links nach rechts ist standard soweit ich weiß. allerdings hat es immer einen hauch von perl, wenn man sowas liest.
Perl schrieb:
open DATEI, "datei.dat" or die "konnte Datei nicht öffnen";