Câu lệnh nào sau đây không bị lỗi khi biên dịch:
Trả lời:
Đáp án đúng: D
Câu hỏi này kiểm tra kiến thức về cú pháp câu lệnh if
trong C#. Cụ thể, điều kiện trong câu lệnh if
phải là một biểu thức boolean (tức là, có giá trị là true
hoặc false
).
- Phương án 1:
int i = 2; if(i = 1) Console.WriteLine(i);
Câu lệnh này gán giá trị 1 cho biếni
(i = 1
) và giá trị này (là 1) không phải là kiểu boolean, gây ra lỗi biên dịch trong C#. Trong C#, phép gán không trả về giá trị boolean một cách mặc định như trong C/C++. Do đó câu lệnh if sẽ không nhận được giá trị boolean, gây ra lỗi biên dịch. - Phương án 2:
if(2) Console.WriteLine(i);
Số 2 không phải là một biểu thức boolean. Trong C#, điều kiện trongif
phải là kiểubool
. Vì vậy, câu lệnh này sẽ gây ra lỗi biên dịch. - Phương án 3:
int i = 2; if(i) Console.WriteLine(i);
Tương tự như phương án 2, biếni
có kiểuint
, không phảibool
. Trong C#, bạn không thể sử dụng một giá trị số nguyên trực tiếp làm điều kiện trong câu lệnhif
mà không có so sánh rõ ràng. Do đó, câu lệnh này sẽ gây ra lỗi biên dịch. - Phương án 4:
int i = 2; if(i == 1) Console.WriteLine(i);
Câu lệnh này so sánh giá trị củai
với 1 (i == 1
). Kết quả của phép so sánh này là một giá trị boolean (true
nếui
bằng 1,false
nếu không). Vì vậy, đây là một biểu thức boolean hợp lệ để sử dụng trong câu lệnhif
và không gây ra lỗi biên dịch.
Vậy, chỉ có phương án 4 là không bị lỗi khi biên dịch.