JavaScript is required

Khi bạn thực thi đoạn mã C sau, kết quả sẽ như thế nào?

A.

1 4 5

B.

1 4 7

C.

8 4 7

D.

Một cái khác

Trả lời:

Đáp án đúng: A


Đầu tiên, ta khai báo các biến `i = 1`, `j = 5`, `k`. Sau đó, gán `k = ++i || ++j;` `++i` là tiền tố tăng, nên `i` tăng lên 2 trước khi được sử dụng trong biểu thức. Vì `i = 2` khác 0 (true), nên biểu thức `++i || ++j` sẽ chỉ xét `++i`, và không xét `++j` (do `||` là phép toán OR, nếu vế trái đúng thì không cần xét vế phải). Vậy, `k = i = 2`. Tiếp theo, gán `k && ++j;` `k && ++j` nghĩa là nếu `k` khác 0 (true) thì thực hiện `++j`. Vì `k = 2` khác 0, nên `++j` được thực hiện. `++j` là tiền tố tăng, nên `j` tăng lên 6 trước khi được sử dụng. Tuy nhiên, giá trị của biểu thức `k && ++j` không được gán cho bất kỳ biến nào, do đó giá trị của `j` sau khi tăng lên sẽ không ảnh hưởng đến các biến khác. Cuối cùng, in ra giá trị của `i`, `j`, `k`. `printf("%d %d %d", i, j, k);` Vậy, kết quả in ra là `2 5 2`. Tuy nhiên không có đáp án nào trùng với kết quả tính toán, vậy đáp án đúng là **D. Một cái khác**

Câu hỏi liên quan