Ich denke, Sie haben meistens Ihre eigene Frage beantwortet. Ich könnte eine kleine Änderung an Ihrer Formulierung vornehmen und "temporäre Variable" durch "rvalue" ersetzen, wie von C. Gibbons erwähnt.
Die Begriffe Variable, Argument, temporäre Variable usw. werden klarer, wenn Sie das Speichermodell von C kennenlernen (dies scheint eine schöne Übersicht zu sein: https://www.geeksforgeeks.org/memory-layout-of-c-program/ ).
Der Begriff "rvalue" mag undurchsichtig erscheinen, wenn Sie gerade erst anfangen. Ich hoffe, dass das Folgende bei der Entwicklung einer Intuition darüber hilft.
Lvalue / rvalue sprechen über die verschiedenen Seiten eines Gleichheitszeichens (Zuweisungsoperator): lvalue = linke Seite (Kleinbuchstabe L, keine "Eins") rvalue = rechte Seite
Wenn Sie ein wenig darüber lernen, wie C Speicher (und Register) verwendet, können Sie erkennen, warum die Unterscheidung wichtig ist. In breiten Pinselstrichen erzeugt der Compiler eine Liste der Anweisungen in Maschinensprache, die das Ergebnis eines Ausdrucks (der R - Wert) berechnet und dann legt dieses Ergebnis irgendwo (der L - Wert). Stellen Sie sich einen Compiler vor, der sich mit dem folgenden Codefragment befasst:
x = y * 3
Im Assembly-Pseudocode sieht es möglicherweise so aus wie in diesem Spielzeugbeispiel:
load register A with the value at memory address y
load register B with a value of 3
multiply register A and B, saving the result in A
write register A to memory address x
Der ++ - Operator (und sein Gegenstück) benötigen ein "irgendwo" zum Ändern, im Wesentlichen alles, was als Wert funktionieren kann.
Das Verständnis des C-Speichermodells ist hilfreich, da Sie eine bessere Vorstellung davon haben, wie Argumente an Funktionen übergeben werden und (eventuell) wie mit der dynamischen Speicherzuweisung wie der Funktion malloc () gearbeitet wird. Aus ähnlichen Gründen können Sie irgendwann eine einfache Assembly-Programmierung studieren, um eine bessere Vorstellung davon zu bekommen, was der Compiler tut. Auch wenn Sie gcc verwenden , die -S- Option "Nach der eigentlichen Kompilierungsphase anhalten; nicht zusammenbauen". kann interessant sein (obwohl ich empfehlen würde, es an einem kleinen Codefragment zu versuchen ).
Nebenbei bemerkt: Die ++ - Anweisung gibt es seit 1969 (obwohl sie in Cs Vorgänger B begann):
(Ken Thompsons) Beobachtung (war), dass die Übersetzung von ++ x kleiner war als die von x = x + 1. "
Wenn Sie dieser Wikipedia-Referenz folgen, gelangen Sie zu einem interessanten Artikel von Dennis Ritchie (das "R" in "K & R C") über die Geschichte der C-Sprache, der hier der Einfachheit halber verlinkt ist: http://www.bell-labs.com/ usr / dmr / www / chist.html wo Sie nach "++" suchen können.