Toán tử ba ngôi (ternary operator) cần ba toán hạng, ký hiệu ? :. Còn gọi là conditional operator (toán tử điều kiện). Cải thiện hiệu năng và giảm dòng code.
Cú pháp:
Expression1 ? Expression2 : Expression3
Ví dụ 1
#include <stdio.h>
int main() {
int a = -1;
double b = 26.4231;
int c = a ? printf("True value: %lf", b) : printf("False value: 0");
return 0;
}
Kết quả
True value: 26.423100
Expression1 luôn đánh giá. Expression2 chạy nếu Expression1 khác 0 (true), Expression3 chạy nếu Expression1 bằng 0 (false).
Toán tử ba ngôi có kiểu trả về, phụ thuộc Expression2 và khả năng chuyển đổi Expression3 sang kiểu Expression2. Nếu không chuyển đổi được → lỗi biên dịch.
Ví dụ 2
#include <stdio.h>
int main() {
int x = -1, y = 3;
double b = x + y + 0.5;
int c = x < y ? printf("True value: %lf", b) : printf("False value: 0");
return 0;
}
Kết quả
True value: 2.500000