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 ifelse dài hơn .

Toán tử bậc ba có ba đối số:

  1. Đầu tiên là đối số so sánh
  2. Thứ hai là kết quả khi so sánh đúng
  3. 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 ifelse :

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_truenếu conditionđược đáp ứng, và value_if_falsenế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 < blà đúng.

Hãy nhớ rằng các đối số value_if_truevalue_if_falsephả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