Saya pikir Anda sebagian besar menjawab pertanyaan Anda sendiri. Saya mungkin membuat perubahan kecil pada frase Anda dan mengganti "variabel sementara" dengan "rvalue" seperti yang disebutkan C.Gibbons.
Variabel istilah, argumen, variabel sementara, dan sebagainya akan menjadi lebih jelas saat Anda mempelajari model memori C (ini terlihat seperti gambaran umum yang bagus: https://www.geeksforgeeks.org/memory-layout-of-c-program/ ).
Istilah "rvalue" mungkin tampak buram ketika Anda baru memulai, jadi saya harap hal berikut membantu mengembangkan intuisi tentangnya.
Lvalue / rvalue berbicara tentang sisi yang berbeda dari tanda sama dengan (operator penugasan): lvalue = sisi kiri (huruf kecil L, bukan "satu") rvalue = sisi kanan
Mempelajari sedikit tentang bagaimana C menggunakan memori (dan register) akan membantu untuk melihat mengapa perbedaan itu penting. Dalam sapuan kuas yang luas , kompilator membuat daftar instruksi bahasa mesin yang menghitung hasil ekspresi (nilai r) dan kemudian meletakkan hasilnya di suatu tempat (nilai l). Bayangkan seorang kompiler berurusan dengan fragmen kode berikut:
x = y * 3
Dalam perakitan pseudocode mungkin terlihat seperti contoh mainan ini:
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
Operator ++ (dan - mitranya) membutuhkan "tempat" untuk memodifikasi, pada dasarnya apa pun yang dapat bekerja sebagai nilai l.
Memahami model memori C akan membantu karena Anda akan mendapatkan ide yang lebih baik di kepala Anda tentang bagaimana argumen diteruskan ke fungsi dan (akhirnya) bagaimana bekerja dengan alokasi memori dinamis, seperti fungsi malloc (). Untuk alasan serupa Anda mungkin mempelajari beberapa pemrograman perakitan sederhana di beberapa titik untuk mendapatkan ide yang lebih baik tentang apa yang dilakukan kompilator. Juga jika Anda menggunakan gcc , opsi -S "Berhenti setelah tahap kompilasi tepat; jangan merakit." bisa menarik (meskipun saya akan merekomendasikan mencobanya pada potongan kode kecil ).
Sekadar tambahan: Instruksi ++ telah ada sejak 1969 (meskipun itu dimulai pada pendahulu C, B):
Pengamatan (Ken Thompson) adalah bahwa terjemahan dari ++ x lebih kecil daripada terjemahan x = x + 1. "
Setelah referensi wikipedia itu akan membawa Anda ke tulisan menarik oleh Dennis Ritchie ("R" dalam "K&R C") tentang sejarah bahasa C, ditautkan di sini untuk kenyamanan: http://www.bell-labs.com/ usr / dmr / www / chist.html tempat Anda dapat mencari "++".