ลำดับการ Evaluate Function Arguments ใน C เป็น Unspecified Behavior (ขึ้นกับ Compiler) แต่ส่วนใหญ่ทำ Right-to-Left
ตัวอย่างทดสอบ
void test(int x, int y, int z) {
printf("x=%d y=%d z=%d\n", x, y, z);
}
int main() {
int a = 10;
test(a++, a++, a++);
}
ผลลัพธ์ทั่วไป (Right-to-Left)
x=12 y=11 z=10
z ได้ 10 (Evaluate ก่อน) y ได้ 11 x ได้ 12 (Evaluate ท้ายสุด)
หมายเหตุ: ไม่ควรเขียนโค้ดที่พึ่งพาลำดับการ Evaluate Arguments