câu lệnh printf của em gây ra undefine behavior vì trong C các tham số được truyền vào hàm số ko theo thứ tự nào hết, đừng lầm tưởng là nó truyền từ trái sang phải.
ví dụ a = 0; f(a = 1, a, a = 2); thì trình biên dịch hoàn toàn có thể hiểu là f(1, 1, 2) hoặc f(1, 2, 2), hoặc f(1, 0, 2), hoặc f(2, 2, 2), f(1, 1, 1), v.v…
em đang xài Dev-C++ thì tìm xem cách nào truyền thêm -Wall
vào trình biên dịch lúc nó biên dịch chương trình xem nó có warning ko, nếu ko thì em tìm cái thư mục có chứa trình biên dịch cho DevC++, rồi click chọn nò, rồi bấm ShiftDelete và down trình biên dịch khác về nhé.
nếu nó có in ra warning như thế này thì tốt:
prog.cc:6:28: warning: operation on 'i' may be undefined [-Wsequence-point]
printf("%d %d\n", ++i, ++i);
^~~