Xem xét hành vi printf khi tham số chứa toán tử ++. Hầu hết trình biên dịch đánh giá tham số từ phải sang trái.
Ví dụ
#include <stdio.h>
int main() {
volatile int x = 20;
printf("%d %d\n", x, x++);
x = 20;
printf("%d %d\n", x++, x);
x = 20;
printf("%d %d %d ", x, x++, ++x);
return 0;
}
Kết quả
21 20 20 20 22 21 21
Giải thích: tham số cuối cùng được đánh giá trước. x++ in giá trị cũ rồi tăng, ++x tăng rồi in.