Je pense que vous avez répondu à votre propre question.
Je pourrais faire un petit changement à votre phrasé et de remplacer "une variable temporaire" avec "rvalue" comme C. Gibbons mentionné.
Les modalités de la variable, d'un argument, variable temporaire et ainsi de suite deviendra plus clair lorsque vous vous renseignez sur C du modèle de mémoire (cela ressemble à une belle vue d'ensemble: https://www.geeksforgeeks.org/memory-layout-of-c-program/ ).
Le terme "rvalue" peut sembler opaque lorsque vous êtes juste de commencer, alors j'espère que le suivant aide à l'élaboration d'une intuition.
Lvalue/rvalue sont en train de parler sur les différents côtés du signe égal (opérateur d'affectation):
lvalue = gauche (L minuscule, pas un "on")
valeur r = à droite
Apprentissage un peu plus sur la façon dont C utilise de la mémoire (et enregistre) sera utile pour voir pourquoi la distinction est importante. Dans de larges coups de brosse, le compilateur crée une liste d'instructions en langage machine qui calcule le résultat de l'expression (la rvalue), puis met ce résultat quelque part (la lvalue). Imaginez un compilateur de traiter avec le fragment de code suivant:
x = y * 3
En assemblée de pseudo, il pourrait ressembler à quelque chose comme ce jouet exemple:
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
L'opérateur ++ (et de ses -- homologue) besoin d'un "quelque part" pour modifier, essentiellement tout ce qui peut travailler comme une lvalue.
La compréhension de la C modèle de mémoire sera utile, car vous aurez ainsi une meilleure idée dans votre tête sur la façon dont les arguments sont passés à des fonctions et (éventuellement) la façon de travailler avec allocation dynamique de la mémoire, comme le malloc() de la fonction. Pour des raisons similaires, vous pouvez étudier un simple assemblage de programmation à un certain point pour avoir une meilleure idée de ce que le compilateur est en train de faire. Aussi, si vous utilisez gcc, le -S de l'option "Arrêter après l'étape de la compilation en elle-même, ne s'assemblent pas." peut être intéressante, mais je vous recommande de l'essayer sur un petit fragment de code).
Juste en aparté:
Le ++ instruction a été autour depuis 1969 (bien qu'il a commencé en C prédécesseur, B):
(Ken Thompson) observation (a) que la traduction de ++x est plus petit que x=x+1."
Suivant que wikipedia référence vous amène à un intéressant article de Dennis Ritchie (le "R" en "K&R C") sur l'histoire du langage C, liée ici pour plus de commodité: http://www.bell-labs.com/usr/dmr/www/chist.html où vous pouvez rechercher pour "++".