Nếu biến chr có kiểu dữ liệu char (Character) thì câu lệnh if nào sau đây đúng cú pháp?
Trả lời:
Đáp án đúng: D
Câu hỏi kiểm tra kiến thức về cú pháp câu lệnh `if` trong ngôn ngữ lập trình C/C++ (hoặc các ngôn ngữ tương tự) khi so sánh biến kiểu `char`.
* **Kiểu dữ liệu `char`:** Kiểu `char` dùng để lưu trữ một ký tự duy nhất. Ký tự được đặt trong cặp dấu nháy đơn (`'...'`).
* **So sánh bằng:** Để so sánh hai giá trị bằng nhau, ta dùng toán tử `==`.
* **Gán giá trị:** Toán tử `=` dùng để gán giá trị.
* **Dấu nháy đơn và nháy kép:** Dấu nháy đơn (`'...'`) dùng cho ký tự, dấu nháy kép (`"..."`) dùng cho chuỗi.
Phân tích các đáp án:
* **A. `if (chr = "a")`:** Sai. Sử dụng toán tử gán `=` thay vì toán tử so sánh `==`. Ngoài ra, `"a"` là một chuỗi (string), không phải là một ký tự (character). Vì `chr` là kiểu `char`, nên so sánh với chuỗi là sai.
* **B. `if (chr = 'a')`:** Sai. Sử dụng toán tử gán `=` thay vì toán tử so sánh `==`. Câu lệnh này sẽ gán giá trị 'a' cho `chr` và biểu thức điều kiện sẽ đánh giá thành giá trị của `chr` (khác 0 nên thường được coi là true), chứ không thực hiện so sánh.
* **C. `if (chr == "a")`:** Sai. Sử dụng toán tử so sánh `==` là đúng, nhưng `"a"` là một chuỗi (string), không phải là một ký tự (character). Do đó không thể so sánh `chr` kiểu `char` với một chuỗi.
* **D. `if (chr == 'a')`:** Đúng. Sử dụng toán tử so sánh `==` để so sánh `chr` (kiểu `char`) với ký tự `'a'` (kiểu `char`). Đây là cách so sánh đúng cú pháp và ngữ nghĩa.
Vậy đáp án đúng là D.





