Руководство пользователя для GNU Awk
7. Выражения
7.8 Операторы увеличения и уменьшения
Операторы увеличения и уменьшения увеличивают или уменьшают значение переменной на единицу. То же самое можно сделать оператором присваивания, так чnо эти операторы не увеличивают возможности языка; но они представляют удобные сокращения обычных операторов.
Оператор добавления единицы пишется `++'. Он может использоваться для увеличения переменной до или после использования ее значения. Для предварительного увеличения переменной v нужно писать `++v'. Это добавляет единицу к значению v и это новое значение есть значение выражения. Этот оператор эквивалентен оператору `v += 1'.
Запись `++' после переменной определяет пост-приращение. Такой оператор также увеличивает значение переменной. Разница в том, что значением увеличенного выражения считается старое значение переменной. Так, если foo имеет значение 4, то выражение `foo++' также имеет значение 4, но меняет значение foo на 5.
Пост-приращение `foo++' почти эквивалентно `(foo += 1) - 1'. Они не точно эквивалентны потому, что все числа в awk обрабатываются с плавающей точкой. Поэтому `foo + 1 - 1' не обязательно равно foo. Но эта разность ощутима только если вы имеете дело с очень маленькими числами (меньше чем 10e12).
Любое lvalue может быть увеличено на единицу. Поля и элементы массивов увеличиваются подобно переменным. (Пишите `$(i++)' если вы хотите сослаться на поле и одновременно увеличить переменную. Скобки необходимы ввиду большего приоритета оператора ссылки на поле `$'.)
Оператор уменьшения `--' действует подобно `++', вычитая единицу вместо добавления. Подобно `++', он может действовать как преуменьшение и пост-уменьшение lvalue. Приведем сводку этих операторов.
++lvalue Это выражение увеличивает lvalue и новое значение становится значением этого выражения.
lvalue++ Это выражение увеличивает lvalue, но значение выражения есть старое значение lvalue.
--lvalue Подобно `++lvalue', но вместо увеличения вычитает единицу. Оно уменьшает lvalue и новое значение считается также значением выражения.
lvalue-- Подобно `lvalue++', но вместо добавления вычитает единицу, уменьшая lvalue. Значение выражения есть старое значение lvalue.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|