logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

116 Глава 2

Три оператора присваивания на рис. 2.11

passes = passes + 1; failures = failures + 1; student = student + 1;

могут быть записаны более кратко в виде:

passes += 1; failures += + 1; student += 1;

или с использованием операции инкремента в префиксной форме:

++passes;

++failures;

++student;

или в постфиксной форме:

passes++;

failures++;

student++;

Важно отметить, что когда инкремент или декремент переменной осу­ществляется в виде отдельного оператора, то префиксная и постфиксная формы приводят к одинаковому результату. И только если переменная по­является в контексте более сложного выражения, тогда префиксная и пост­фиксная формы приводят к разным результатам.

В операциях инкремента и декремента могут использоваться как опе­ранды только имена простых переменных (в дальнейшем мы увидим, что в операциях инкремента и декремента могут использоваться так называемые Ь-величины).

Типичная ошибка программирования 2.10

Попытка использовать в операции инкремента или декремента операнд, отличный от имени простой переменной, например, выражение ++(x+1) является синтаксичес­кой ошибкой.

В таблице на рис. 2.15 приведены сведения о приоритетах и ассоци­ативности всех операций, описанных к настоящему моменту. Операции при­ведены сверху-вниз по мере уменьшения их приоритета. Второй столбец указывает ассоциативность операций на каждом уровне приоритета. Отме­тим, что условная операция (?:), унарные операции инкремента (++), дек­ремента (--), плюс (+), минус (-) и приведения к типу, операции присва­ивания =, +=, -=, *=, /= и %= имеют ассоциативность справа налево. Все остальные операции в таблице на рис. 2.15 имеют ассоциативность слева направо. В третьем столбце таблицы приведены названия различных групп операций.