Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Toán tử ba ngôi (?:) trong C++

Toán tử điều kiện (?:) là toán tử ba ngôi (ternary operator) – nhận ba toán hạng. Toán tử điều kiện hoạt động như sau:

  • Toán hạng đầu tiên chuyển ngầm sang bool. Được đánh giá và mọi hiệu ứng phụ hoàn tất trước khi tiếp tục.
  • Nếu toán hạng đầu là true (1), toán hạng thứ hai được đánh giá.
  • Nếu toán hạng đầu là false (0), toán hạng thứ ba được đánh giá.

Kết quả là kết quả của toán hạng được đánh giá – thứ hai hoặc thứ ba. Chỉ một trong hai toán hạng cuối được đánh giá. Đánh giá toán tử điều kiện khá phức tạp. Các bước trên chỉ là giới thiệu nhanh. Biểu thức điều kiện có tính kết hợp từ phải sang trái. Toán hạng đầu phải là kiểu nguyên hoặc con trỏ. Các quy tắc cho toán hạng thứ hai và thứ ba:

  • Nếu cùng kiểu, kết quả là kiểu đó.
  • Nếu cả hai là kiểu số học hoặc liệt kê, chuyển đổi số học thông thường đưa về kiểu chung.
  • Nếu cả hai là kiểu con trỏ hoặc một là con trỏ và một là biểu thức hằng số 0, chuyển đổi con trỏ đưa về kiểu chung.
  • Nếu cả hai là kiểu tham chiếu, chuyển đổi tham chiếu đưa về kiểu chung.
  • Nếu cả hai là void, kiểu chung là void.
  • Nếu cùng kiểu do người dùng định nghĩa, kiểu chung là kiểu đó.
  • Nếu khác kiểu và ít nhất một là kiểu do người dùng định nghĩa, quy tắc ngôn ngữ xác định kiểu chung.

Ví dụ

#include <iostream>
using namespace std;
int main() {
    int i = 1, j = 2;
    cout << (i > j ? i : j) << " is greater." << endl;
}

Kết quả

2 is greater.