Bedingter Operator eine Frage!

Diskutiere Bedingter Operator eine Frage! im Java Basics - Anfänger-Themen Forum; 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...

  1. ocsme
    ocsme Mitglied
    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:
    Code (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
     
  2. Vielleicht hilft dir dieses Buch hier weiter.
  3. httpdigest
    httpdigest Bekanntes Mitglied
    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:
    Code (Java):
    int result = count;
    count++;
    count = result;
     
    ocsme gefällt das.
  4. ocsme
    ocsme Mitglied
    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
     
  5. horstiii2
    horstiii2 Bekanntes Mitglied
    Moin,
    ich will so heißen.... :D

    1 ist ein arithmetischer Ausdruck und 2 ist eine post Inkrementierung.
     
  6. mihe7
    mihe7 Bekanntes Mitglied
    Das lass mal @Flown lesen...
     
  7. horstiii2
    horstiii2 Bekanntes Mitglied
    Es bedarf noch der Stimmenmehrheit dazu :p :D (Meinetwegen fände ich ieeinen anderen Nickname besser :))
     
  8. ocsme
    ocsme Mitglied
    Der Nick "DerWissende" ist doch auch cool ;)
    Besser als meiner :D
    Nochmals danke an eure nette Hilfe :)
     
  9. mihe7
    mihe7 Bekanntes Mitglied
    Hat Dein anderes Ich noch nicht zugestimmt? :D
     
  10. horstiii2
    horstiii2 Bekanntes Mitglied
    Wofür steht Deiner? wenn ich fragen darf....

    Oh, *in Schublade wühl* welche Wenigkeit sei jetzt gemeint? :D

    Aber Spaaaß, ich habe gar keine Schubladen und somit auch (noch) keine Zustimmung(en) :(
     
    Zuletzt bearbeitet: 12. Jan. 2019
  11. ocsme
    ocsme Mitglied
    Mein Nick steht für nichts :D
     
  12. Wenn du Java lernen möchtest, empfehlen wir dir dieses Buch hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Bedingter Operator eine Frage! - Ähnliche Themen

Zeitbedingter Methodenaufruf
Zeitbedingter Methodenaufruf im Forum Allgemeine Java-Themen
Bedingter Ausdruck
Bedingter Ausdruck im Forum Hausaufgaben
Bedingter Breakpoint
Bedingter Breakpoint im Forum IDEs und Tools
Umwandlung div. Operatoren
Umwandlung div. Operatoren im Forum Java Basics - Anfänger-Themen
x*y*z mit Shift Operator moeglich?
x*y*z mit Shift Operator moeglich? im Forum Java Basics - Anfänger-Themen
Thema: Bedingter Operator eine Frage!