Thứ Tư, 27 Tháng Mười Một 2024
Trang chủLập trìnhLập trình C/C++Toán tử ba ngôi trong lập trình C/C++ - Toán tử điều...

Toán tử ba ngôi trong lập trình C/C++ – Toán tử điều kiện

Toán tử ba ngôi (ternary operator) là một trong những khái niệm quan trọng trong lập trình C/C++. Toán tử ba ngôi cho phép thực hiện đồng thời dựa trên một điều kiện và cung cấp một giá trị trả về tùy thuộc vào kết quả đúng/sai của điều kiện đó. Toán tử ba ngôi giúp tạo mã ngắn gọn hơn và dễ đọc hơn trong một số trường hợp, ngoài ra nó cũng có thể sử dụng thay thế cho câu lệnh if else trong một số trường hợp đơn giản. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng toán tử ba ngôi trong C/C++.

DANH SÁCH BÀI VIẾT
Toán tử ba ngôi trong lập trình C/C++ - Toán tử điều kiện
OOP là gì? Các tính chất của lập trình hướng đối tượng trong C++
Làm sao để tạo Class? Thuộc tính và phương thức trong OOP là gì? C++
Nạp chồng và ghi đè trong lập trình hướng đối tượng(OOP) C++
Tìm hiểu các toán tử thao tác bit trong lập trình C/C++

Cú pháp cơ bản toán tử ba ngôi C/C++

condition ? value_if_true : value_if_false;

Trong đó

  • condition: Là biểu thức điều kiện(Ví dụ: a > 5, b > 5, b<5, a >b….).
  • value_if_true: Gía trị trả về nếu biểu thức điều kiện là đúng
  • value_if_false: Giá trị trả về nếu biểu thức điều kiện là sai.

=> value_if_true, value_if_false cũng có thể là 1 toán tử ba ngôi cấp 2.

Nói tóm lại biểu thức ba ngôi sẽ trả về hay thực hiện tham số thứ nhất(sau dấu ?) nếu đk là đúng, tham số thứ 2(sau dấu :) nếu đk là sai.

>>XEM THÊM: Cây đa phân trong lập trình C/C++ – Cấu trúc dữ liệu cây đa phân

Ví dụ sử dụng

VÍ DỤ 1: Dưới đây là một ví dụ đơn giản, tìm phần tử lớn hơn trong 2 phần tử.

Nếu sử dụng if else ta sẽ phải viết như sau:

int a = 10, b = 20;
int max_value;
if(a > b){
   max_value = a;
}else{
    max_value = b;
}

Tuy nhiên khi sử dụng toán tử 3 ngôi dòng code sẽ ngắn gọn hơn rất nhiều.

int a = 10, b = 20;
int max_value = (a > b) ? a : b;

Và cả 2 cách viết trên thì max_value lúc này đều sẽ được gắn giá trị là 20.

Chương trình minh họa

#include <iostream>
using namespace std;

int main()
{
   int a = 10, b = 20;
   int max_value = (a > b) ? a : b;
   std::cout << max_value << std::endl;
}

Kết quả:

20

VÍ DỤ 2: Cũng với ví dụ tương tự như trên nhưng lúc này là tìm giá trị lớn nhất trong 3 số sử dụng toán tử 3 ngôi.

Lúc này ta có thể viết toán tử 3 ngồi theo nhiều cấp bậc như sau.

int a = 10, b = 35, c = 20;
int max_value = (a > b && a > c) ? a : ((b>c) ? b : c);

Lúc này các bước thực hiện sẽ diễn ra như sau, đầu tiên là kiểm tra biểu thức điều kiện (a > b && a > c), rõ rằng ta thấy a không lớn hơn cả b và c, vì vậy biểu thức điều kiện là sai, vì vậy lúc này sẽ không trả về tham số thứ nhất là a mà trả về tham số thứ 2, tức là biểu thức ((b>c) ? b : c). Và biểu thức này lại là 1 biểu thức toán tử 3 ngôi, nó sẽ tiếp tục thực hiện biểu thức này(mình tạm gọi là biểu thức cấp 2).

Biều thức điều kiện b > c là đúng, vậy toán tử 3 ngôi cấp 2 này sẽ trả về kết quả là tham số thứ nhất tức là b. Lúc này max_value sẽ được gắn giá trị bằng b.

@@Phần này mình chỉ làm để ví dụ giúp bạn hiểu rõ hơn toán tử 3 ngôi, không khuyến khích áp dụng toán tử 3 ngôi 2 cấp hay nhiều cấp, vì lúc này code sẽ khá là khó nhìn vì vậy nên vẫn ưu tiên là dùng if else.

Chương trình minh họa

#include <iostream>

using namespace std;

int main()
{
    int a = 10, b = 35, c = 20;
    int max_value = (a > b && a > c) ? a : ((b>c) ? b : c);
    
    std::cout << max_value << std::endl;
}

Kết quả

35

VÍ DỤ 3: Sử dụng toán tử 3 ngôi trong trả về kết quả cho hàm.

#include <iostream>

using namespace std;

int _max(int a, int b){
    return a > b ? a : b;
}

int main()
{
   int a = 10, b = 20;

    std::cout << _max(a,b) << std::endl;
}

Kết quả:

20

Trong bài viết này, chúng ta đã tìm hiểu về cách sử dụng toán tử ba ngôi trong lập trình C/C++. Đây là một toán tử giúp bạn viết code ngắn gọn và dễ đọc hơn trong các biểu thức đơn giản. Tuy nhiên với các biểu thức phức tạp hơn thì nó lại rất loàng ngoằng, vì vậy chỉ nên áp dụng với các biểu thức đơn giản. Cảm ơn bạn đã đọc hết bài viết! Chúc bạn học tốt.

[Xem tất cả bài viết chủ đề C/C++ tại đây]

XÊM THÊM
Hiểu về cấu trúc dữ liệu cây trong lập trình C/C++
Cấu trúc dữ liệu Danh sách liên kết (Linked list) trong lập trình C/C++
Cấu trúc dữ liệu ngăn xếp trong lập trình C/C++
Cấu trúc dữ liệu cây nhị phân trong lập trình C/C++
Tìm hiểu các toán tử thao tác bit trong lập trình C/C++
Cấu trúc dữ liệu cây nhị phân trong lập trình C/C++
Thuật toán đếm số lượng chữ số của số nguyên dương n
Thuật toán tính dãy số FibonacciBài toán chuẩn hóa xâu ký tự
Kiểm tra số chẵn lẻ trong lập trình C/C++
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
0
Giáo sư! có thể ném gạch bên dưới nhé!x