Язык программирования Си для персонального компьютера | страница 82
Во втором примере переменная i декрементируется перед ее использованием в качестве индекса массива line.
Простое присваивание
Операция простого присваивания обозначается знаком =. Значение правого операнда присваивается левому операнду. Левый операнд должен быть модифицируемым L-выражением. При присваивании выполняются правила преобразования типов, описанные в разделе 4.7.1.
Операция вырабатывает результат, который может быть далее использован в выражении. Результатом операции является присвоенное значение. Тип результата — тип левого операнда.
Пример 1:
double х;
int у;
х = у; Значение у преобразуется к типу double и присваивается х.
Пример 2:
int а, b, с; b = 2; a = b + (с = 5);
Переменной с присваивается значение 5, переменной а — значение b + 5, равное 7.
Составное присваивание
Операция составного присваивания состоит из простой операции присваивания, скомбинированной с какой-либо другой бинарной операцией. При составном присваивании вначале выполняется действие, специфицированное бинарной операцией, а затем результат присваивается левому операнду. Выражение составного присваивания со сложением, например имеет вид:
<выражение1> += <выражение2>
Оно может быть записано и таким образом:
<выражение1> = <выражение1> + <выражение2>
Значение операции вырабатывается по тем же правилам, что и для операции простого присваивания. Однако выражение составного присваивания не эквивалентно обычной записи, поскольку в выражении составного присваивания <выражение1> вычисляется только один раз, в то время как в обычной записи оно вычисляется дважды: в операции сложения и в операции присваивания. Например, оператор
*str1.str2.ptr += 5;
легче для понимания и выполняется быстрее, чем оператор
*str1.str2.ptr = *str1.str2.ptr + 5;
Использование составных операций присваивания может повысить эффективность программ. Каждая операция составного присваивания выполняет преобразования, которые определяются входящей в ее состав бинарной операцией, и соответственно ограничивает типы своих операндов. Результатом операции составного присваивания является значение, присвоенное левому операнду. Тип результата — тип левого операнда.
Пример:
n &= 0xFFFE;
В этом примере операция поразрядное И выполняется над n и шестнадцатеричным значением FFFE, и результат присваивается n.