736 Часть II. Программирование на C++

есть большая практика в написании выражений с арифметическими операциями, а если вы изучали логику или дискретную математику, то вам приходилось иметь дело и с чуть более экзотическими логическими операциями.

Ваших знаний об операциях и опыта достаточно для написания наиболее простых выражений. Двухместные операции вместе с операциями присваивания (знак равенства) можно использовать в сочетании. Рассмотрим

а = а + 5;

В этом выражении а увеличивается на 5. Поскольку в нем присутствуют только а и 5, можно заменить его на

а += 5;

Подобным образом можно комбинировать присваивание с любыми двухместными операциями, если результат присваивается одному из операндов. Делать такие подстановки совершенно не обязательно — язык это позволяет, но не требует. Имея в виду все вышесказанное, вы, по всей* вероятности, уже овладели искусством писать выражения, используя более чем половину указанных в таблице операций.

С таким багажом знаний вы можете уже реализовать многие из наиболее популярных разновидностей алгоритмов. Поставьте в списке галочки напротив тех операций, с которыми вы знаете как обращаться. Для оставшихся вам желательно написать несколько программ и поэкспериментировать. Однако искусство владения всеми операциями — это только полдела. В главе 16 "Перегрузка операций" вы узнаете, как приспосабливать операции к новым типам данных.

Трехместные операции

Существует всего одна трехместная или тернарная (ternary) операция — это пара символов :?. Она использует три операнда и представляет собой краткую форму оператора if.. .else (и может быть им заменена). В общем виде она выглядит таким образом:

test ? true_test : false_test;

Здесь test - это условное выражение с целочисленным значением, типа а == ь, !р и т. п. Если значение test истинно, то выполняется ветвь true_test (между ? и :), а если ложно, то false_test.

Эта операция хорошо подходит для тех случаев, когда условие и выполняемые действия просты. Трехместная операция читается следующим образом:

если test то выполнить код true_test иначе выполнить код false_test.

Далее в книге вам постоянно будут встречаться примеры применения этой операции.