What is the output of the following code? #include using namespace std; int main() { int a = 20, b = 100; int &n = a; n = a++; n = &b; cout << a << "," << n << endl; system("pause"); }
Trả lời:
Đáp án đúng: D
Đoạn mã C++ này có lỗi biên dịch vì sử dụng tham chiếu đến tham chiếu (`int &&n = a;`), điều này không được phép trong C++. Do đó, chương trình sẽ không thể biên dịch và chạy.
Nếu như dòng `int &&n = a;` được sửa thành `int &n = a;` thì chương trình có thể biên dịch và chạy. Trong trường hợp đó, `n = a++;` sẽ gán giá trị của `a` cho `n` (tức là 20), sau đó `a` tăng lên 21. Dòng `n = &b;` sẽ gây ra lỗi biên dịch vì `n` là một tham chiếu đến `int`, không phải là một con trỏ đến `int`. Nếu dòng này được bỏ qua, thì `cout << a << "," << n << endl;` sẽ in ra giá trị của `a` (21) và `n` (20).
Tuy nhiên, vì câu hỏi gốc chứa lỗi biên dịch, đáp án chính xác là "compile error".