Thắc mắc về i++ và ++i trong printf

Cho em hỏi câu này giải thích như thế nào ạ. Tại em thấy lạ quá .Theo em biết printf hình như thực hiện từ phải qua trái , i++ thì gán trước cộng sau , ++i cộng trước rồi gán nếu như vậy thì kết quả phải là 22 13 13 13 nhưng sao đáp án lại là 22 13 14 14 (thử code vào thì nó cũng ra vậy luôn ạ).

void main()
{
   int a=10, b;
   b = a++ + ++a;
   printf("%d %d %d %d", b, a++, a, ++a);
}

A. 12 10 11 13
B. 22 12 12 13
C. 22 11 11 11
D. 22 14 12 13
E. 22 13 14 14

Answer: Option E

Cái này là undefined behavior nhé. Không ai biết trước được kết quả in ra là gì.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?