Програмистите използват трикомпонентна оператора за вземане на решения на мястото на по-дълъг , ако и друг условни конструкции.
Тройният оператор приема три аргумента:
- Първият е аргумент за сравнение
- Вторият е резултатът при истинско сравнение
- Третото е резултатът при фалшиво сравнение
Помага да се мисли за тройния оператор като за стенографичен начин или за писане на изявление if-else. Ето един прост пример за вземане на решения, използващ if и else :
int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);
Този пример отнема повече от 10 реда, но това не е необходимо. Можете да напишете горната програма само в 3 реда код с помощта на трикратен оператор.
Синтаксис
condition ? value_if_true : value_if_false
Изявлението оценява value_if_true
дали condition
е изпълнено и в value_if_false
противен случай.
Ето горния пример, пренаписан за използване на тройния оператор:
int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);
Резултатът от горния пример трябва да бъде:
10
c
е зададено равно на a
, тъй като условието a < b
е било вярно.
Не забравяйте, че аргументите value_if_true
и value_if_false
трябва да са от един и същи тип и те трябва да бъдат прости изрази, а не пълни изявления.
Тернарните оператори могат да бъдат вложени точно като операторите if-else. Обмислете следния код:
int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);
Ето кода по-горе, пренаписан с помощта на вложен тернарен оператор:
int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);
Резултатът от двата комплекта код по-горе трябва да бъде:
3