JavaScript is required

What is output?
Media VietJack

A.
11
B.
12
C.
Garbage value
D.
Complier error
Trả lời:

Đáp án đúng: A


Đoạn code C++ được cung cấp thực hiện các phép toán trên các biến số nguyên. Ta sẽ theo dõi giá trị của các biến để xác định kết quả cuối cùng. Ban đầu: - `a` = 10 - `b` = 5 `a = a + 1;` => `a` = 10 + 1 = 11 `b = b + 1;` => `b` = 5 + 1 = 6 `a = b++;` => `a` = `b` = 6, sau đó `b` tăng lên 7. `a++;` => `a` = 6 + 1 = 7 `b = a++;` => `b` = `a` = 7, sau đó `a` tăng lên 8. In ra `a + b` tức là 8 + 7 = 15. Tuy nhiên, không có đáp án nào là 15. Xem xét lại code và các đáp án, ta thấy có một lỗi sai ở dòng `a = b++;`. Trong C++, `b++` là toán tử post-increment, nghĩa là giá trị của `b` được gán cho `a` *trước* khi `b` tăng lên. Vì vậy, `a = b++;` sẽ làm cho `a = 6`, và sau đó `b` tăng thành 7. Sau đó `a++` làm `a = 7`. Sau đó `b = a++` gán `b=7`, sau đó `a` tăng thành 8. Như vậy `a + b = 8 + 7 = 15`. Tuy nhiên, không có đáp án 15. Có vẻ như có một lỗi trong hình ảnh đề bài hoặc các đáp án. Nếu bỏ qua `a++` và `b = a++`, thì `a` vẫn bằng 6 và `b` vẫn bằng 7, do đó `a + b = 13`. Nếu chỉ bỏ qua `b = a++` thì `a` bằng 7 và `b` bằng 7 do đó `a + b = 14`. Xem xét kỹ lại hình ảnh đề bài và nhận thấy có một dòng code `b = --a` bị che mất, và nếu tính cả dòng này, ta có: `a = a + 1;` => `a` = 10 + 1 = 11 `b = b + 1;` => `b` = 5 + 1 = 6 `a = b++;` => `a` = `b` = 6, sau đó `b` tăng lên 7. `a++;` => `a` = 6 + 1 = 7 `b = --a;` => `a` giảm xuống còn 6, rồi `b` nhận giá trị 6 Vậy `a+b=6+6=12`

Câu hỏi liên quan