JavaScript is required

Đọc đoạn mã sau:

11: int x = 3;

12: int y = 1;

13: if (x = y) {

14: System.out.println("x = " + x);

15: }

Kết quả in ra của đoạn mã trên là gì?

A.

x = 1

B.

x = 3

C.

Lỗi biên dịch

D.

Chương trình chạy nhưng không in ra kết quả

Trả lời:

Đáp án đúng: C


Đoạn mã trên chứa một lỗi cú pháp quan trọng trong câu lệnh `if (x = y)`. Trong Java, `=` là toán tử gán, không phải toán tử so sánh bằng (`==`). Quá trình thực thi sẽ diễn ra như sau: 1. `int x = 3;` Khai báo và khởi tạo biến `x` với giá trị 3. 2. `int y = 1;` Khai báo và khởi tạo biến `y` với giá trị 1. 3. `if (x = y)`: Biểu thức này thực hiện gán giá trị của `y` (là 1) cho `x`. Sau phép gán, giá trị của `x` sẽ là 1. Trong Java, biểu thức gán trả về giá trị được gán, tức là biểu thức `x = y` trả về giá trị 1. 4. Vì Java không cho phép dùng số nguyên làm điều kiện trực tiếp trong `if`, mà điều kiện phải là `boolean`, nên trình biên dịch sẽ báo lỗi: "incompatible types: int cannot be converted to boolean". Vì vậy, chương trình sẽ không biên dịch được.

Câu hỏi liên quan