Рассмотрим условный оператор if, который выбирает из чисел a и b максимальное.
1 2 3 4 |
if (a > b) max = a; else max = b; |
В языках программирования C и C# эту операцию можно записать короче, используя условное выражение с трехместной операцией ?:
1 |
max = (a > b) ? a : b; |
В общем случае тернарная (тройная) операция выглядит следующим образом:
o1 ? o2 : o3
Сначала вычисляется выражение o1. Если оно истинно (т.е. не равно нулю), то тернарный оператор возвращает выражение o2. Если o1 ложно, то в этом случае будет возвращено значение выражения o3.
Выражение o1 необязательно заключать в скобки, потому что приоритет операций ?: очень низок. Но для соблюдения хорошего стиля и для того, чтобы подчеркнуть условную часть выражения, скобки рекомендуется ставить.
Тернарная операция бывает очень полезна, поскольку позволяет сделать код значительно короче. Ниже представлен пример программы, выводящей на экран n элементов массива по 10 в каждой строке. При помощи тернарной операции расставляются пробелы между элементами, и в завершении строки добавляется символ конца строки.
1 2 |
for (int i = 0; i < n; i++) printf("%d%c", m[i], (i%10==9 || i==n-1) ? '\n' : ' '); |
Поделиться в соц. сетях: