The *nudge operators* can be used to [[increment?]] or [[decrement?]] the value of their [[operand?]]s, depending on which operator is used. The *increment operator* (nudge up), is represented by a [[plusplus?]] symbol and the *decrement operator* (nudge down), is represented by a [[doubledash?]] symbol. The nudge operators modify their [[operand?]]s, so the [[operand?]]s must be [[variable_name?]]s:
number++ # increment number-- # decrement
The nudge operators can exhibit pre-nudge or post-nudge behaviour, depending on whether they are placed to the left or to the right of their [[operand?]]s.
If the operator is used before a variable name, the operator exhibits pre-nudge behaviour and the variable is changed, before the [[expression?]] is evaluated.
# preincrement number = 5 result = ++number # result is 6 and number is 6 # predecrement number = 5 result = --number # result is 4 and number is 4
If the operator is used after the variable name, the operator exhibits post-nudge behaviour and the variable is changed after the [[expression?]] has been evaluated:
# postincrement number = 5 result = number++ # result is 5 but number is 6 # postdecrement number = 5 result = number-- # result is 5 but number is 4
When used against floating point values, the nudge operators will attempt to add or subtract one to obtain a return value:
number = 5.4 result = ++number # result is 6.4 number = 0.4 result = --number # result is -0.6
In awk, numerical strings will evaluated as normal numeric values within an expression, so the nudge operators will return appropriate results:
number = "1" result = ++number # result is 2 number = "0" result = --number # result is 1 number = "-0.4" result = --number # result is -1.4
Non numerical strings will evaluated as zero within a numeric expression, and the nudge operators will return a value relative to that:
string = "abc" result = ++string # 1 string = "abc" result = --string # -1