LATEST

Toán tử ba ngôi trong C / C++

Trong bài viết này, codehow sẽ giới thiệu đến các bạn một khái niệm mới trong lập trình là toán tử ba ngôi trong C / C++. Đây được xem như là một dạng câu lệnh if rút gọn, được sử dụng trong các câu có điều kiện đơn giản.

Với những chương trình có điều kiện đơn giản thì việc sử dụng toán tử ba ngôi rất hữu ích, giúp tiết kiệm thời gian khi lập trình.

Bây giờ hãy cùng mình bắt đầu tim hiểu về toán tử ba ngôi trong C / C++ thôi nhé.

Cú pháp toán tử ba ngôi trong C / C++

Đúng với tên gọi của nó là toán tử ba ngôi, có ba phần trong cấu trúc toán tử ba ngôi trong C / C++. Hãy cùng xem cú pháp của nó dưới đây:

condition ? true_value : false_value;

Trong đó:

  • condition: là điều kiện của phép toán. Có thể trả về một trong hai giá trị true hoặc false.
  • true_value: Đây là giá trị trả về nếu condition true.
  • false_value: Đây là giá trị trả về nếu condition false.

Để hiểu rõ hơn, mình có một ví dụ đơn giản sử dụng toán tử ba ngôi.

Ví dụ: Viết chương trình yêu cầu người dùng nhập vào một số nguyên. Sử dụng toán tử ba ngôi trong C / C++ để kiểm tra số đó là số chẵn hay số lẻ rồi hiển thị ra màn hình.

#include <iostream>
using namespace std;
int main() {
  //khai báo biến n là số cần kiểm tra
  int n;
  //yêu cầu người dùng nhập vào số cần kiểm tra
  cout<<"Nhập vào số n: ";
  cin>>n;
  //khai báo biến s là chuỗi, dùng để thông báo
  string s;
  //sử dụng toán tử ba ngôi kiểm tra biến n là số chẵn hay số lẻ
  s = (n % 2 == 0) ? "Số chẵn" : "số lẻ";
  //hiển thị thông báo ra màn hình
  cout << s;

  cout<<"\n----------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai23 01 png

Nếu chúng ta không sử dụng toán tử ba ngôi mà sử dụng câu lệnh if else thì sẽ như sau:

#include <iostream>
using namespace std;
int main() {
  //khai báo biến n là số cần kiểm tra
  int n;
  //yêu cầu người dùng nhập vào số cần kiểm tra
  cout<<"Nhập vào số n: ";
  cin>>n;
  //sử dụng câu lệnh if else để kiểm tra số chẵn hay số lẻ
  if(n % 2 == 0) cout<<"Đây là số chẵn";
  else cout<<"Đây là số lẻ";

  cout<<"\n----------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai23 02 png

Kết luận: Chúng ta chỉ nên sử dụng toán tử ba ngôi khi điều kiện đơn giản, nếu điều kiện phức tạp hơn thì nên sử dụng câu lệnh if...else.

Ví dụ sử dụng toán tử ba ngôi trong C / C++

Trong phần này mình sẽ thực hiện một vài ví dụ sử dụng toán tử ba ngôi trong C / C++. Mỗi ví dụ sẽ được viết bằng hai ngôn ngữ khác nhau là C và C++, hãy bắt đầu thôi nào!!!

Ví dụ 1: yêu cầu người dùng nhập vào hai số, sử dụng toán tử ba ngôi để kiểm tra xem số nào hơn nhất. Sau đó hiển thị thông báo ra màn hình.

Chương trình C:

#include <stdio.h>

int main(void) {
  // định nghĩa các biến 
   int n1, n2, max; 
  printf("Nhập vào số n1: ");
  scanf("%d", &n1);
  printf("Nhập vào số n2: ");
  scanf("%d", &n2);
   // Số lớn nhất giữa n1 và n2 
   max = (n1 > n2) ? n1 : n2; 
   // In ra số lớn nhất 
   printf("Số lớn nhất giữa %d và %d là: %d.", n1, n2, max);

  printf("\n----------------------\n");
  printf("Chương trình này được đăng tại codehow.net");
  return 0;
}

Chương trình C++:

#include <iostream>
using namespace std;
int main() {
  // định nghĩa các biến 
   int n1, n2, max; 
  cout<<"Nhập vào số n1: ";
  cin>>n1;
  cout<<"Nhập vào số n2: ";
  cin>>n2;
   // Số lớn nhất giữa n1 và n2 
   max = (n1 > n2) ? n1 : n2; 
   // In ra số lớn nhất 
   cout<<"Số lớn nhất giữa "<<n1<<" và "<<n2<<" là: "<<max;

  cout<<"\n----------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Kết quả:

bai23 04 png

Ví dụ 2: Yêu cầu người dùng nhập vào một năm bất kỳ, sử dụng toán tử ba ngôi để kiểm tra xem có phải năm nhuận hay không. Hiển thị kết quả ra màn hình.

Gợi ý:

  • Năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100.
  • Năm nhuận là năm chia hết cho 400.

Chương trình C++:

#include <iostream>
using namespace std;
int main() {
  //khai báo biến n là số cần kiểm tra
  int n;
  //yêu cầu người dùng nhập vào số cần kiểm tra
  cout<<"Nhập vào số năm: ";
  cin>>n;
  string s;
  s = ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0)) ? "Năm nhuận":"Không phải năm nhuận";
  cout<<s;
  cout<<"\n----------------------\n";
  cout<<"Chương trình này được đăng tại codehow.net";
  return 0;
}

Lời kết

Như vậy là chúng ta đã cùng nhau tìm hiểu về toán tử ba ngôi trong C / C++. Đây là dạng rút gọn của câu lệnh if nên khi gặp các trường hợp điều kiện đơn giản thì hãy dùng nó.

Đối với trường hợp chương trình có điều kiện phức tạp, chúng ta nên sử dụng if...else để dễ xử lý và bảo trị code hơn. Đừng quá lạm dụng toán tử ba ngôi trong chương trình nhé.

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn