대부분 자신의 질문에 대답 한 것 같습니다. C.Gibbons가 언급했듯이 구문을 약간 변경하고 "임시 변수"를 "rvalue"로 바꿀 수 있습니다.
변수, 인수, 임시 변수 등의 용어는 C의 메모리 모델에 대해 배울수록 더 명확해질 것입니다 (멋진 개요처럼 보입니다 : https://www.geeksforgeeks.org/memory-layout-of-c-program/). ).
"rvalue"라는 용어는 처음 시작할 때 불투명 해 보일 수 있으므로 다음 내용이 이에 대한 직관을 개발하는 데 도움이되기를 바랍니다.
Lvalue / rvalue는 등호 (할당 연산자)의 다른 측면에 대해 설명합니다. lvalue = 왼쪽 ( "일"이 아닌 소문자 L) rvalue = 오른쪽
C가 메모리 (및 레지스터)를 사용하는 방법에 대해 조금 배우면 구별이 중요한 이유를 확인하는 데 도움이됩니다. 에서 폭 넓은 브러시 스트로크 , 컴파일러는 표현합니다 (를 rvalue)의 결과를 계산하는 기계 언어 명령어의 목록을 만든 다음 박았 그 결과 어딘가합니다 (좌변)을. 다음 코드 조각을 처리하는 컴파일러를 상상해보십시오.
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
++ 연산자 (및 그에 상응하는-)는 수정할 "어딘가", 본질적으로 lvalue로 작동 할 수있는 모든 것이 필요합니다.
C 메모리 모델을 이해하면 인수가 함수에 전달되는 방법과 (결국) malloc () 함수와 같은 동적 메모리 할당을 사용하는 방법에 대해 더 나은 아이디어를 얻을 수 있기 때문에 도움이 될 것입니다. 비슷한 이유로 컴파일러가 수행하는 작업에 대한 더 나은 아이디어를 얻기 위해 어떤 시점에서 간단한 어셈블리 프로그래밍을 공부할 수 있습니다. 또한 gcc 를 사용하는 경우 -S 옵션 "적절한 컴파일 단계 후에 중지하십시오. 어셈블하지 마십시오." 흥미로울 수 있습니다 ( 작은 코드 조각 에서 시도하는 것이 좋습니다 ).
제쳐두고 : ++ 명령어 는 1969 년부터 사용 되어 왔습니다 (C의 전임자 B에서 시작되었지만).
(Ken Thompson의) 관찰은 ++ x의 번역이 x = x + 1의 번역보다 작다는 것이 었습니다. "
위키피디아 참조를 따라 가면 편리하게 여기에 링크 된 C 언어의 역사에 대한 Dennis Ritchie ( "K & R C"의 "R")의 흥미로운 글을 볼 수 있습니다. http://www.bell-labs.com/ usr / dmr / www / chist.html 여기서 "++"를 검색 할 수 있습니다.