Chương trình sau cho kết quả là gì: #include
Trả lời:
Đáp án đúng: C
Đoạn chương trình C này thực hiện các phép toán trên con trỏ. Ban đầu, `px` trỏ đến phần tử đầu tiên của mảng `a`, và `py` trỏ đến phần tử cuối cùng của mảng `a`.
`px = a;` gán địa chỉ của `a[0]` cho `px`.
`py = &a[5];` gán địa chỉ của `a[5]` cho `py`.
`++px;` tăng `px` lên 1, tức là `px` trỏ đến `a[1]`.
`printf("%d", ++px - py);` in ra hiệu giữa `px` và `py`. Vì `px` đã tăng lên một lần trước đó nên `px` đang trỏ tới `a[1]`. Phép trừ hai con trỏ sẽ cho ra số lượng phần tử giữa hai con trỏ đó. Trong trường hợp này, `px` trỏ đến `a[1]` và `py` trỏ đến `a[5]`. Vì vậy, `px - py` sẽ là 1 - 5 = -4. Tuy nhiên, do có phép `++px` nên `px` trỏ tới `a[1]` trước khi tính toán, do đó kết quả của `px - py` là `1 - 5 = -4`. Vậy `++px - py` sẽ là 1 - 5 = -4.
Vậy đáp án đúng là A: -4