Trong C++, câu lệnh điều kiện ngắn gọn thường được thực hiện bằng toán tử ba ngôi (?:
). Đây là cách viết tắt và ngắn gọn của câu lệnh if-else
. Cú pháp của nó như sau:
<điều kiện> ? <giá trị nếu đúng> : <giá trị nếu sai>;
<điều kiện>
: Một biểu thức điều kiện (thường trả về giá trị true
hoặc false
).
<giá trị nếu đúng>
: Giá trị được trả về nếu điều kiện đúng (true
).
<giá trị nếu sai>
: Giá trị được trả về nếu điều kiện sai (false
).
Ví dụ minh họa:
- Kiểm tra số chẵn hay lẻ:
int num = 5;
string result = (num % 2 == 0) ? "Chẵn" : "Lẻ";
cout << "Số " << num << " là " << result << endl;
Gán giá trị dựa trên điều kiện:
int a = 10, b = 20;
int max = (a > b) ? a : b; // Lấy giá trị lớn hơn giữa a và b
cout << "Giá trị lớn nhất là: " << max << endl;
Sử dụng trong hàm:
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 15;
cout << ((x > y) ? x : y) << " là số lớn hơn." << endl;
return 0;
}
Lưu ý:
- Toán tử ba ngôi thích hợp cho các câu lệnh đơn giản, không phức tạp. Nếu điều kiện hoặc logic phức tạp hơn, bạn nên sử dụng
if-else
để dễ đọc và bảo trì mã nguồn. - Không nên lồng ghép quá nhiều toán tử ba ngôi vì có thể gây khó hiểu.
Dưới đây là một số ví dụ khác về cách sử dụng câu lệnh điều kiện rút gọn trong C++:
Xác định số âm hay dương
int num = -5;
string result = (num >= 0) ? "Dương" : "Âm";
cout << "Số " << num << " là " << result << endl;
Tìm số lớn hơn
int a = 25, b = 15;
int max = (a > b) ? a : b;
cout << "Số lớn hơn là: " << max << endl;
Kiểm tra năm nhuận
int year = 2024;
string leapYear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? "Năm nhuận" : "Không phải năm nhuận";
cout << year << " là " << leapYear << endl;
Xác định mùa dựa trên tháng
int month = 5;
string season = (month >= 3 && month <= 5) ? "Xuân" :
(month >= 6 && month <= 8) ? "Hè" :
(month >= 9 && month <= 11) ? "Thu" : "Đông";
cout << "Tháng " << month << " là mùa " << season << endl;
Ưu điểm
- Ngắn gọn: Thay thế được các câu lệnh
if-else
đơn giản. - Tối ưu mã nguồn: Làm cho mã dễ đọc hơn khi chỉ có một điều kiện đơn giản.
Nhược điểm
- Khó đọc khi phức tạp: Nếu có nhiều điều kiện hoặc logic phức tạp, sử dụng toán tử ba ngôi sẽ làm mã khó hiểu.
- Không hỗ trợ khối lệnh: Không thể dùng để thực hiện nhiều câu lệnh trong cùng một điều kiện.
Ứng dụng
Toán tử ba ngôi thường được dùng trong các trường hợp như:
- Gán giá trị đơn giản dựa trên điều kiện.
- Tìm giá trị lớn nhất/nhỏ nhất.
- Kiểm tra tính hợp lệ hoặc điều kiện cụ thể.
- Rút gọn các biểu thức trong các hàm nhỏ gọn.
So sánh với if-else
Đặc điểm | Toán tử ba ngôi | Câu lệnh if-else |
---|---|---|
Độ dài mã | Ngắn gọn | Dài hơn |
Độ phức tạp | Phù hợp cho điều kiện đơn giản | Hỗ trợ điều kiện phức tạp |
Tính dễ đọc | Dễ đọc khi đơn giản, khó nếu phức tạp | Luôn dễ đọc hơn với logic lớn |
Khả năng mở rộng | Không tốt với nhiều điều kiện | Thích hợp với logic phức tạp |
Lưu ý khi sử dụng
- Chỉ nên dùng khi:
- Điều kiện đơn giản, không có nhiều nhánh.
- Cần rút gọn các câu lệnh để tăng tính gọn nhẹ của mã nguồn.
- Nên tránh sử dụng trong các trường hợp:
- Logic phức tạp hoặc có nhiều điều kiện lồng nhau.
- Cần thực hiện nhiều câu lệnh dựa trên một điều kiện.
Ví dụ tổng hợp
#include <iostream>
using namespace std;
int main() {
int a = 15, b = 10;
cout << "Số lớn hơn là: " << ((a > b) ? a : b) << endl;
int num = -5;
cout << "Số " << num << " là " << ((num >= 0) ? "Dương" : "Âm") << endl;
int diem = 8;
cout << "Học sinh: " << ((diem >= 5) ? "Đậu" : "Rớt") << endl;
return 0;
}