Трактовка истинности

Операции увеличения и уменьшения на 1

Объединение действий с присваиванием

В программах нередко одна и та же переменная используется в левой и правой части операции присваи­вания, например:

x = x + 5;

C++ позволяет сократить запись таких действий при помощи опе­раций типа "выполнить операцию и присвоить":

x += 5;

то есть запись вида

операнд_1 операция = операнд_2 ;

означает, что операнд операнд_1 вначале используется как левый операнд операции операция, а затем, как левый операнд операции при­сваивания полученного результата.

Такие составные операции присваивания определены для всех арифметических, а также для всех поразрядных (побитовых) операций, описанных в разделе 9.1. Как и в случае простой операции присваивания, значением любой составной операции присваивания является значение ее левого операнда после присваивания.

Очень часто в программе приходится увеличивать или уменьшать значение переменной на единицу. Чтобы сделать эти действия наиболее эффективными и удобными для использования, в C++ имеют­ся специальные знаки операций: ++ (увеличить на единицу) и -- (умень­шить на единицу):

i++; // или ++i;

j--; // или --j;

Эти операции часто называют операциями, соответственно, инкрементирования и декрементирования. Имеются две формы этих операций: пре­фиксная (знаки операции располагаются слева от операнда) и постфиксная (знаки операции располагаются справа от него).

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

В C++ применяется расширенное толкование истинности. Оно заключается в том, что в условиях можно использовать не только логические, но и числовые выражения. При определении истинности числовых выражений (то есть, при преобразовании числовых значений в логические) ноль преобразуется в значение false, любое ненулевое числовое значение – в значение true.

Логические выражения, в свою очередь, могут использоваться в числовых выражениях. В таких случаях значение false преобразуется в числовое значение 0, а значение true – в числовое значение 1.

3.5. Операция ?

C++ имеет очень мощную тернарную операцию ?, которую можно использовать вместо конструкции if-else все с той же целью – сокращения записи программ. Операция ? имеет следующий вид:

операнд_1 ? операнд_2 : операнд_3

где операнд_1, операнд_2 и операнд_3 – это выражения.

Результатом выполнения операции ? является значение второго или третьего операнда в зависимости от истинности первого. Если логическим значением первого операнда является true, результатом операции является значение второго операнда, если false – третьего. Пример:

y = x >= 9 ? 100 : 200;

3.6. Операция «запятая»

Знак “запятая” часто используется для разделения элементов каких-либо последовательностей (например, при пречислении объявляемых переменных или параметров функции).

Кроме того, в языке определена операция “запятая”, которая связывает (группирует) два или более действий (выражений) и обеспечивает их последовательное выполнение (вычисление). Приоритет операции "запятая" ниже, чем у всех остальных операций C++.

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