インクリメント演算子は変数の値を1だけ増やし、または減らします。代入演算子でも同じことができるので、インクリメント演算子によってawk言語が強力になるわけではありません。しかし、頻繁に使う場合、この省略は便利です。
1を加える演算子は`++'と書きます。変数のインクリメントは、その値をとる前でもあとでも可能です。
変数vをプリインクリメントするには、++vと書きます。これはvの値に1を加えます。またその新しい値もこの式の値です。代入式v += 1はこれと完全に同じです。
変数のあとに`++'を書くと、ポストインクリメントが指定されます。これは変数の値を同じようにインクリメントしますが、違う点は、インクリメント式それ自身の値は変数の古い値だということです。したがって、fooが値4を持っている場合、式foo++は値4を持っていますが、fooの値は5に変更されます。
ポストインクリメントfoo++は(foo += 1) - 1と書くのとほとんど同じです。しかし、完全に同じではありません。なぜなら、awkではすべての数は浮動小数点だからです。浮動小数点では、foo + 1 - 1は必ずしもfooに等しくはありません。しかし、かなり小さな数(1兆より小さい)しか扱わない限り、違いはごくわずかです。
どのような左辺値でもインクリメントできます。フィールドと配列の要素は変数と同じようにインクリメントできます。
デクリメント演算子`--'は`++'と同じように動作します。ただし、これは1が加えられるのではなく、引かれます。`++'と同じように、プリデクリメントするために左辺値の前で使うこともできますし、ポストデクリメントするために左辺値のうしろで使うこともできます。
インクリメント式とデクリメント式のまとめを次に示します。
++lvalue
lvalue++
--lvalue
++lvalueと似ていますが、加算ではなく減算します。この式はlvalueをデクリメントし、その結果生じる値を返します。
lvalue--
lvalue++と似ていますが、加算ではなく減算します。この式はlvalueをデクリメントします。この式の値は、lvalueの古い値です。