Bedingter Operator eine Frage!

Bitte aktiviere JavaScript!
Guten Tag,
mal wieder meine Wenigkeit (bald nenne ich mich in Nervsack um) :D

Hab ein Problem mit dem Bedingten Operator und zwar verstehe ich folgendes nicht:
Java:
int count=0;
        int limit=5;
        for(int i=0;i<=limit;i++) {
            count = (count==limit) ? 0 : count+1;
            System.out.println(count);
        }
Gibt mir korrekt aus: 1 2 3 4 5 0

Doch wieso klappt es nicht wenn man beim Bedingten Operator es so machen würde: count = (count==limit) ? 0 : count++;

Dann kommt nur 0 0 0 0 0 0 raus :(
Was übersehe ich dabei?
variable ++; der Inkrementoperator ist doch äquivalent zu: variable = variable + 1; variable+=1 oder eben variable++;
Da es die Präfixstellung des Inkrementoperators ist sollte er doch zuerst count hochzählen und zurück geben.

Wo ist mein Fehler?

LG
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Bei `count = (count==limit) ? 0 : count++;`passiert am Ende folgendes:
Wenn er bei `count++` ankommt, wird zuerst der Wert von `count` abgefragt. Dieser ist zum Zeitpunkt der Abfrage noch 0. Das heißt 0 wird das Ergebnis des Ausdrucks `count++`. Das wiederum heißt, dass 0 auch das Ergebnis des Ausdrucks ` (count==limit) ? 0 : count++` sein wird (da er ja in den "else"-Zweig des ternären Operators schon gegangen ist). Direkt nach dem Abfragen von `count++` (was 0 lieferte) wird nun die Variable `count` um 1 inkrementiert. Und jetzt wird durch die Zuweisung `count = ...` die Variable `count` auf den vorher berechneten Wert (also 0) zurückgesetzt. Das heißt, die Zuweisung überschreibt den Effekt des Postinkrements wieder.

Die Frage (bzw. das Thema) dieses Threads ist also nicht so sehr der ternäre Operator ?:, sondern das Verhalten des Postinkrements. Einfacher kannst du es z.B. haben mit:
count = count++;
Hier tritt derselbe Effekt auf. Das wäre dann äquivalent zu:
Java:
int result = count;
count++;
count = result;
 
Verstanden das war mal wieder zu schnell hier im Forum nachgefragt als selbst nach zu denken.
Entschuldigung!

Aber nun ist die Sache zu 100% klar! Ich dachte nur erst hööö... was soll den das :D "ERST HIRN EINSCHALTEN!"

Danke nochmals :)

LG
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben