# Урок 4. Тернарный (третичный) оператор

**URL:** <https://forum.itvdn.com/t/urok-4-ternarnyj-tretichnyj-operator/3043>\
**Category:** Справочник C# Starter\
**Created:** [15.01.2019 15:45:45 UTC](https://forum.itvdn.com/t/urok-4-ternarnyj-tretichnyj-operator/3043 "2019-01-15T15:45:45Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![admin.guide](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/a/6a8cbe/32.png) [@admin.guide](https://forum.itvdn.com/u/admin.guide)\
**Post date:** [15.01.2019 15:45:45 UTC](https://forum.itvdn.com/t/urok-4-ternarnyj-tretichnyj-operator/3043/1 "2019-01-15T15:45:45Z")

</div>

Тернарный оператор состоит из следующих операндов:` (условие) ? (блок истинности или то) : (блок иначе)`. Тернарный оператор также могут называть троичным оператором, потому что он единственный во всём языке имеет три оператора (условие и 2 блока).

![image](https://forum.itvdn.com/uploads/default/original/1X/fab493b13ded311eda3b4e507092861e62a523b5.png)

Алгоритм работы тернарной операции: `(логическое выражение) ? выражение 1 : выражение 2`

1. Вычисляется логическое выражение (условие).
2. Если логическое выражение истинно, то вычисляется значение выражения 1, в противном случае — значение выражения 2.
3. Вычисленное значение возвращается.

Тернарный оператор [`? :`], является сокращенной формой конструкции `if-else`, поэтому, например, такой тернарный оператор:

`max = (a > b) ? a : b; // ЕСЛИ: (a > b) ТО: вернуть a ИНАЧЕ: вернуть b;`

представляет собой следующее:

```
if (a > b)
{
    max = a;
}
else
{
    max = b;
}

```

**Правило** : тернарный оператор обязательно должен возвращать значение, иначе будет ошибка.

Также нужно рассмотреть работу тернарного оператора в случаях, когда в выражении происходят дополнительные действия, например:

`max = a > b ? c = a : c = b;`

В данном случае если условие будет истинным, то дальнейший ход действий будет таковым:

1. `с = а`
2. `max = c`

С этого следует, что присвоение результата работы тернарного оператора переменной всегда будет последним.

Кроме этого, как видно с данного примера **условие в тернарном операторе не обязательно брать в скобки ( )**.

Источник: видеоурок Александра Шевчука ["ВИДЕОУРОК №4. УСЛОВНЫЕ КОНСТРУКЦИИ"](https://itvdn.com/ru/video/csharp-starter/conditional?position=1590)

[![%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202](https://forum.itvdn.com/uploads/default/original/1X/b38ed3846d27463ae91c4449efd4de36bbb0b1b1.jpeg) предыдущая статья](https://forum.itvdn.com/t/urok-4-uslovnaya-konstrukcziya-if-else-s-neskolkimi-vetvyami-kaskad-uslovnyh-operatorov/3042) | [следующая статья ![%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202](https://forum.itvdn.com/uploads/default/original/1X/6188b82e0808cd73a15f53f8e652f939106184bc.jpeg)](https://forum.itvdn.com/t/urok-4-ogranicheniya-svyazannye-s-bezopasnostyu-tipov/3044)
