Obwohl die kurze Antwort "es ist kein lvalue" ist richtig, das ist vielleicht nur die Frage betteln. Warum ist es nicht ein lvalue? Oder, wie wir in C# sagen, eine Variable.
Der Grund ist, weil Sie nicht Ihren Kuchen haben und es auch essen können. Ermitteln Sie logisch:
Zunächst ist die Bedeutung eines ++ Operators in C#, ob Postfix oder Präfix, "nehmen Sie den Wert dieser Variablen, erhöhen Sie den Wert, weisen Sie der Variablen den neuen Wert zu einen Wert als Ergebnis erzeugen ". Der als Ergebnis erzeugte Wert ist entweder der ursprüngliche Wert oder der inkrementierte Wert, abhängig davon, ob es sich um ein Postfix oder ein Präfix handelte. Wie auch immer, Sie produzieren einen Wert.
Zweitens, der Wert einer Variablen ist immer der aktuelle Inhalt dieser Variablen. (Modulo bestimmte bizarre Threading-Szenarien, die uns weit weg bringen würde.)
Ich hoffe, Sie stimmen zu, dass dies vollkommen vernünftige Regeln sind.
Nun sollte es klar sein, warum das Ergebnis von i ++ keine Variable sein kann, aber im Fall, dass es nicht, lassen Sie mich klarstellen:
Angenommen i 10. Die Bedeutung von i sollte „get ++ seine der Wert von i - 10 - inkrementiere es - 11 - speichere es - i ist jetzt 11 - und gib den ursprünglichen Wert als Ergebnis - 10 "an. Also, wenn Sie print (i ++) sagen, sollte es 10 drucken, und 11 sollte in i gespeichert werden.
Nehmen wir nun an die Bedeutung von i ++ ist die Variable, nicht den Wert zurückzukehren. Du sagst print (i ++) und was passiert? Sie erhalten den Wert von i - 10 - erhöhen Sie es - 11 - speichern Sie es - ich bin jetzt 11 - und geben Sie die Variable als Ergebnis zurück. Was ist der aktuelle Wert der Variablen? 11! Welches ist genau das, was Sie NICHT drucken möchten.
Kurz gesagt, wenn i ++ eine Variable zurückgibt, dann würde es tun genau das Gegenteil der beabsichtigten Bedeutung des Betreibers! Ihr Vorschlag ist logisch inkonsistent, weshalb keine Sprache dies tut.
Auch wenn es funktioniert hat, sollten Sie nicht, weil Sie nicht das Leben hassen sollte: (. Sehen ++ i ++ würde ich traurig in jedem Kontext machen, unabhängig von der Erklärung. – Malaxeur
kann nicht, und sollte nicht. – luke
ich wusste nicht, es war der „dumme-Operator-Trick“ Tag dank John! – zvolkov