Обяснен тернарен оператор в C

Програмистите използват трикомпонентна оператора за вземане на решения на мястото на по-дълъг , ако и друг условни конструкции.

Тройният оператор приема три аргумента:

  1. Първият е аргумент за сравнение
  2. Вторият е резултатът при истинско сравнение
  3. Третото е резултатът при фалшиво сравнение

Помага да се мисли за тройния оператор като за стенографичен начин или за писане на изявление 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