JavaScript is required

Câu lệnh nào sau đây không bị lỗi khi biên dịch:

A.

int i = 2; if(i = 1) Console.WriteLine(i);

B.

if(2) Console.WriteLine(i);

C.

int i = 2; if(i) Console.WriteLine(i);

D.

int i = 2; if(i == 1) Console.WriteLine(i);

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ến i (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 trong if phải là kiểu bool. 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ến i có kiểu int, không phải bool. 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ệnh if 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ủa i 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ếu i 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ệnh if 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.

Câu hỏi liên quan