เป็นอีกครั้งที่ปัญหาแบบ "i=i--" ที่เราชื่นชอบที่สุด ใน C99 เรามี:
6.5 นิพจน์ #2: ระหว่างจุดลำดับก่อนหน้าและถัดไป วัตถุจะต้องมีการแก้ไขค่าที่เก็บไว้ สูงสุดหนึ่งครั้ง
70) ย่อหน้านี้แสดงผล !!ไม่ได้กำหนด!! สำนวนคำสั่ง เช่น
i = ++i + 1;
แต่สำหรับพฤติกรรมที่ไม่ได้ระบุ อาจมีตัวแปรตั้งแต่เอาต์พุตแบบสุ่มไปจนถึง "การทำงานของโปรแกรมในลักษณะที่บันทึกไว้" (c99 3.4.3)
ดังนั้นคำถาม:
gcc บันทึกพฤติกรรม สำหรับ i=i++, i=i-- และอื่นๆ ในคำสั่งหรือไม่
รหัสจริงคือ
int main(){int i=2;i=i--;return i;}