Câu lệnh điều kiện rút gọn trong C++

Lập trình website

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:

  1. 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ểmToán tử ba ngôiCâu lệnh if-else
Độ dài mãNgắn gọnDài hơn
Độ phức tạpPhù hợp cho điều kiện đơn giảnHỗ trợ điều kiện phức tạp
Tính dễ đọcDễ đọc khi đơn giản, khó nếu phức tạpLuôn dễ đọc hơn với logic lớn
Khả năng mở rộngKhông tốt với nhiều điều kiệnThí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;
}