Книга: Язык программирования Си для персонального компьютера
Составное присваивание
Составное присваивание
Операция составного присваивания состоит из простой операции присваивания, скомбинированной с какой-либо другой бинарной операцией. При составном присваивании вначале выполняется действие, специфицированное бинарной операцией, а затем результат присваивается левому операнду. Выражение составного присваивания со сложением, например имеет вид:
<выражение1> += <выражение2>
Оно может быть записано и таким образом:
<выражение1> = <выражение1> + <выражение2>
Значение операции вырабатывается по тем же правилам, что и для операции простого присваивания. Однако выражение составного присваивания не эквивалентно обычной записи, поскольку в выражении составного присваивания <выражение1> вычисляется только один раз, в то время как в обычной записи оно вычисляется дважды: в операции сложения и в операции присваивания. Например, оператор
*str1.str2.ptr += 5;
легче для понимания и выполняется быстрее, чем оператор
*str1.str2.ptr = *str1.str2.ptr + 5;
Использование составных операций присваивания может повысить эффективность программ. Каждая операция составного присваивания выполняет преобразования, которые определяются входящей в ее состав бинарной операцией, и соответственно ограничивает типы своих операндов. Результатом операции составного присваивания является значение, присвоенное левому операнду. Тип результата — тип левого операнда.
Пример:
n &= 0xFFFE;
В этом примере операция поразрядное И выполняется над n и шестнадцатеричным значением FFFE, и результат присваивается n.
- Пример 4-2. Простое присваивание
- Простое присваивание
- Присваивание функции результата
- Присваивание функций. Функциональный тип данных
- 5.12.2 Присваивание сети адресов класса В
- Переменные ссылочного типа и присваивание
- Пример 4-3. Присваивание значений переменным простое и замаскированное
- 4.2. Присваивание значений переменным
- Присваивание (Assignment)
- 2.6. Присваивание характеристик динамическим эффектам
- 5.12.1 Присваивание сети адресов класса A
- 5.12.3 Присваивание сетям адресов класса С