Go to the first, previous, next, last section, table of contents.


Increment Operators

Increment operators increase or decrease the value of a variable by 1. You could do the same thing with an assignment operator, so the increment operators add no power to the awk language; but they are convenient abbreviations for something very common.

The operator to add 1 is written `++'. It can be used to increment a variable either before or after taking its value.

To pre-increment a variable v, write ++v. This adds 1 to the value of v and that new value is also the value of this expression. The assignment expression v += 1 is completely equivalent.

Writing the `++' after the variable specifies post-increment. This increments the variable value just the same; the difference is that the value of the increment expression itself is the variable's old value. Thus, if foo has the value 4, then the expression foo++ has the value 4, but it changes the value of foo to 5.

The post-increment foo++ is nearly equivalent to writing (foo += 1) - 1. It is not perfectly equivalent because all numbers in awk are floating point: in floating point, foo + 1 - 1 does not necessarily equal foo. But the difference is minute as long as you stick to numbers that are fairly small (less than a trillion).

Any lvalue can be incremented. Fields and array elements are incremented just like variables. (Use `$(i++)' when you wish to do a field reference and a variable increment at the same time. The parentheses are necessary because of the precedence of the field reference operator, `$'.)

The decrement operator `--' works just like `++' except that it subtracts 1 instead of adding. Like `++', it can be used before the lvalue to pre-decrement or after it to post-decrement.

Here is a summary of increment and decrement expressions.

++lvalue
This expression increments lvalue and the new value becomes the value of this expression.
lvalue++
This expression causes the contents of lvalue to be incremented. The value of the expression is the old value of lvalue.
--lvalue
Like ++lvalue, but instead of adding, it subtracts. It decrements lvalue and delivers the value that results.
lvalue--
Like lvalue++, but instead of adding, it subtracts. It decrements lvalue. The value of the expression is the old value of lvalue.


Go to the first, previous, next, last section, table of contents.