JavaScript is required

What is output ?
Media VietJack

A.
5, 5
B.
10, 10
C.
Syntax error
Trả lời:

Đáp án đúng: B


Đề bài yêu cầu xác định kết quả in ra màn hình của đoạn code C++. Đoạn code khai báo một biến tĩnh `x` trong hàm `foo`. Biến tĩnh chỉ được khởi tạo một lần duy nhất trong suốt quá trình chạy chương trình. Do đó, trong lần gọi đầu tiên, `x` được khởi tạo là 5. Sau đó, `x` tăng lên 1 đơn vị thành 6 và giá trị này được trả về. Trong hàm `main`, `foo()` được gọi hai lần. Lần gọi đầu tiên trả về 6, và `a` nhận giá trị 6. Lần gọi thứ hai, `x` không khởi tạo lại mà giữ giá trị 6 từ lần gọi trước, sau đó tăng lên 1 thành 7 và trả về. `b` nhận giá trị 7. Cuối cùng, `a` và `b` được in ra. Giá trị của `a` là 6 và `b` là 7. Tuy nhiên, không có đáp án nào trùng với kết quả này. Nếu đề bài yêu cầu in ra `x` trong hàm `foo` thay vì trả về thì đáp án là A. 5, 5. Khi đó, `x` vẫn tăng lên thành 6 nhưng giá trị trả về và gán cho `a` và `b` là giá trị khởi tạo ban đầu. Vì không có đáp án nào chính xác với phân tích ban đầu và giả sử in `x` sẽ cho ra đáp án A, nên ta chọn A, kèm theo giải thích về sự không chắc chắn này.

Câu hỏi liên quan