Toán tử bậc ba trong C được giải thích
Các lập trình viên sử dụng toán tử bậc ba để ra quyết định thay cho các câu lệnh điều kiện if và else dài hơn .
Toán tử bậc ba có ba đối số:
- Đầu tiên là đối số so sánh
- Thứ hai là kết quả khi so sánh đúng
- Thứ ba là kết quả khi so sánh sai
Nó hữu ích để nghĩ về toán tử bậc ba như một cách viết tắt hoặc viết một câu lệnh if-else. Đây là một ví dụ ra quyết định đơn giản bằng cách sử dụng if và else :
int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);
Ví dụ này có hơn 10 dòng, nhưng điều đó không cần thiết. Bạn có thể viết chương trình trên chỉ trong 3 dòng mã sử dụng toán tử bậc ba.
Cú pháp
condition ? value_if_true : value_if_false
Câu lệnh đánh giá value_if_true
nếu condition
được đáp ứng, và value_if_false
nếu không.
Đây là ví dụ trên được viết lại để sử dụng toán tử bậc ba:
int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);
Đầu ra của ví dụ trên phải là:
10
c
được đặt bằng a
, bởi vì điều kiện a < b
là đúng.
Hãy nhớ rằng các đối số value_if_true
và value_if_false
phải cùng kiểu và chúng phải là các biểu thức đơn giản hơn là các câu lệnh đầy đủ.
Các toán tử bậc ba có thể được lồng vào nhau giống như các câu lệnh if-else. Hãy xem xét đoạn mã sau:
int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);
Đây là đoạn mã ở trên được viết lại bằng cách sử dụng toán tử bậc ba lồng nhau:
int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);
Đầu ra của cả hai bộ mã trên phải là:
3