What will the following program print?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>

int main()
{
    int x = 5, y = 10;

    while(x++ < y--)
    {
        printf("%d %d\n", x, y);
    }

    return 0;
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "6 9 7 8 8 7". Then chốt nằm ở dạng hậu tố của x++ và y--: điều kiện được so trên giá trị cũ, nhưng ngay khi việc so sánh xong thì hai biến đã mang giá trị mới, nên printf trong thân vòng lặp luôn thấy giá trị đã tăng giảm. Lượt một so 5 với 10, x thành 6 và y thành 9, in 6 9. Lượt hai so 6 với 9, x thành 7 và y thành 8, in 7 8. Lượt ba so 7 với 8, x thành 8 và y thành 7, in 8 7. Lượt bốn so 8 với 7 nên điều kiện sai và vòng lặp dừng, dù x cùng y vẫn kịp đổi thành 9 và 6. Lựa chọn mở đầu bằng "5 10" coi như printf thấy giá trị trước khi tăng giảm, tức hiểu sai dạng hậu tố. Lựa chọn mở đầu bằng "2 5" không khớp bước nào vì x chỉ tăng còn y chỉ giảm. Lựa chọn chứa dòng "2 2" đòi hai biến gặp nhau ở 2, nhưng chúng gặp nhau quanh 8 và 7 rồi vòng lặp kết thúc.

Cùng phần 3

Xuất hiện trong 1 bộ đề