ฉันคิดว่าคุณตอบคำถามของคุณเองเป็นส่วนใหญ่ ฉันอาจทำการเปลี่ยนแปลงเล็กน้อยกับวลีของคุณและแทนที่ "ตัวแปรชั่วคราว" ด้วย "rvalue" ตามที่ C.Gibbons กล่าวถึง
ตัวแปรเงื่อนไขอาร์กิวเมนต์ตัวแปรชั่วคราวและอื่น ๆ จะชัดเจนยิ่งขึ้นเมื่อคุณเรียนรู้เกี่ยวกับโมเดลหน่วยความจำของ C (ดูเหมือนภาพรวมที่ดี: https://www.geeksforgeeks.org/memory-layout-of-c-program/ )
คำว่า "rvalue" อาจดูไม่ชัดเจนเมื่อคุณเพิ่งเริ่มต้นดังนั้นฉันหวังว่าสิ่งต่อไปนี้จะช่วยในการพัฒนาสัญชาตญาณเกี่ยวกับเรื่องนี้
Lvalue / rvalue กำลังพูดถึงด้านต่างๆของเครื่องหมายเท่ากับ (ตัวดำเนินการกำหนดค่า): lvalue = ด้านซ้ายมือ (ตัวพิมพ์เล็ก L ไม่ใช่ "one") rvalue = ด้านขวามือ
การเรียนรู้เล็กน้อยเกี่ยวกับวิธีที่ C ใช้หน่วยความจำ (และรีจิสเตอร์) จะเป็นประโยชน์ในการดูว่าเหตุใดความแตกต่างจึงมีความสำคัญ ในจังหวะแปรงแบบกว้างคอมไพเลอร์จะสร้างรายการคำสั่งภาษาเครื่องที่คำนวณผลลัพธ์ของนิพจน์ (ค่า rvalue) จากนั้นวางผลลัพธ์นั้นไว้ที่ใดที่หนึ่ง (ค่า lvalue) ลองนึกภาพคอมไพเลอร์ที่จัดการกับส่วนของโค้ดต่อไปนี้:
x = y * 3
ในการประกอบ pseudocode อาจมีลักษณะคล้ายกับตัวอย่างของเล่นนี้:
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ตัวเลือก "หยุดชะงักหลังจากที่ขั้นตอนของการรวบรวมที่เหมาะสม; ไม่ประกอบ." น่าสนใจ (แม้ว่าฉันจะแนะนำให้ลองใช้กับส่วนรหัสขนาดเล็ก )
นอกเหนือจากนี้: คำสั่ง ++ มีมาตั้งแต่ปี 2512 (แม้ว่าจะเริ่มต้นในรุ่นก่อนของ C แต่ B):
(ของ Ken Thompson) สังเกตว่าการแปล ++ x มีขนาดเล็กกว่า x = x + 1 "
หลังจากอ้างอิงวิกิพีเดียนั้นจะนำคุณไปสู่การเขียนที่น่าสนใจโดย Dennis Ritchie (ตัว "R" ใน "K&R C") เกี่ยวกับประวัติศาสตร์ของภาษาซีโดยลิงก์ที่นี่เพื่อความสะดวก: http://www.bell-labs.com/ usr / dmr / www / chist.htmlซึ่งคุณสามารถค้นหา "++"