主にあなた自身の質問に答えたと思います。C.Gibbonsが述べたように、私はあなたの言い回しに小さな変更を加えて、「一時変数」を「rvalue」に置き換えるかもしれません。
変数、引数、一時変数などの用語は、Cのメモリモデルについて学習するにつれて、より明確になります(これは、すばらしい概要のように見えます:https : //www.geeksforgeeks.org/memory-layout-of-c-program/)。
始めたばかりでは「右辺値」という用語は不透明に思えるかもしれません。そのため、直感を理解する上で以下が役立つことを願っています。
左辺値/右辺値は、等号(代入演算子)のさまざまな側面について話している:左辺値=左側(小文字のL、「1」ではない)右辺値=右側
Cがメモリ(およびレジスタ)をどのように使用するかについて少し学ぶことは、区別が重要である理由を理解するのに役立ちます。では、幅広いブラシストローク、コンパイラは式(右辺値)の結果を計算する機械語命令のリストを作成し、置くその結果どこか(左辺値)を。次のコードフラグメントを処理するコンパイラを想像してください。
x = y * 3
アセンブリ疑似コードでは、次のようなおもちゃの例のようになります。
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
++演算子(およびその対応物)は、変更するための「どこかに」、基本的には左辺値として機能できるものは何でも必要です。
Cのメモリモデルを理解すると、引数が関数に渡される方法や、(最終的には)malloc()関数のような動的メモリ割り当てを処理する方法について、頭の中でより良いアイデアが得られるので役立ちます。同様の理由で、コンパイラーが何をしているかをよりよく理解するために、ある時点でいくつかの単純なアセンブリープログラミングを研究するかもしれません。また、gccを使用している場合は、-Sオプション「適切なコンパイルの段階の後で停止し、アセンブルしないでください。」興味深いかもしれません(ただし、小さなコードフラグメントで試すことをお勧めします)。
余談ですが、++命令は1969年から存在しています(ただし、Cの前身であるBで始まりました)。
(ケン・トンプソンの)観察結果は、++ xの変換がx = x + 1の変換よりも小さいことでした。
そのウィキペディアの参照に続いて、便宜上ここにリンクされているC言語の歴史についてのデニス・リッチー(「K&R C」の「R」)による興味深い記事を紹介します。http://www.bell-labs.com/ usr / dmr / www / chist.htmlここで「++」を検索できます。