Contents

C has two two special unary operators called increment (`++`

) and decrement (`--`

) operators. These operators increment and decrement value of a variable by `1`

.

`++x`

is same as `x = x + 1`

or `x += 1`

`--x`

is same as `x = x - 1`

or `x -= 1`

Increment and decrement operators must be used only with a variable not with constants or expressions.

1 2 3 4 | int x = 1, y = 1; ++x; // valid ++5 // invalid - increment operator operating on a constant value ++(x+y) // invalid - increment operating on an expression |

## Increment/Decrement operators are of two types:

- Prefix increment/decrement operator.
- Postfix increment/decrement operator.

Let’s start with the first one.

### Prefix increment/decrement operator

In Prefix increment/decrement operator first, the value of the variable is incremented/decremented then the new value is used in the operation. Let’s take an example:

The statement:

1 | y = ++x; |

means that first the increment the value of `x`

then assign this value to `y`

.

Similarly, the statement:

1 | y = --x; |

means that first the decrement the value of `x`

then assign this value to `y`

.

The following program demonstrates prefix increment/demonstrates operator.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include<stdio.h> int main() { int x = 12, y = 1; printf("Initial value of x = %d\n", x); // print the initial value of y printf("Initial value of y = %d\n\n", y); // print the initial value of y y = ++x; // increment the value of x by 1 then assign this new value to y printf("After incrementing by 1: x = %d\n", x); printf("y = %d\n\n", y); y = --x; // decrement the value of x by 1 then assign this new value to y printf("After decrementing by 1: x = %d\n", x); printf("y = %d\n\n", y); // Signal to operating system everything works fine return 0; } |

**Expected Output:**

1 2 3 4 5 6 7 8 | Initial value of x = 12 Initial value of y = 1 After incrementing by 1: x = 13 y = 13 After decrementing by 1: x = 12 y = 12 |

## Postfix Increment/Decrement operator

In postfix Increment/Decrement operator, first the value of the variable is used in the operation then increment/decrement takes places. For e.g:

The statement:

1 | y = x++; |

means that first the value of `x`

is assigned to `y`

then `x`

is incremented.

Similarly, the statement:

1 | y = x--; |

means that first the value of `x`

is assigned to `y`

then `x`

is decremented.

The following program demonstrates postfix increment/demonstrates operator.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include<stdio.h> int main() { int x = 12, y = 1; printf("Initial value of x = %d\n", x); // print the initial value of y printf("Initial value of y = %d\n\n", y); // print the initial value of y y = x++; // first assign the value of x to y, then increment it by 1 printf("After incrementing by 1: x = %d\n", x); printf("y = %d\n\n", y); y = x--; // first assign the value of x to y, then decrement it by 1 printf("After decrementing by 1: x = %d\n", x); printf("y = %d\n\n", y); // Signal to operating system everything works fine return 0; } |

**Expected Output:**

1 2 3 4 5 6 7 8 | Initial value of x = 12 Initial value of y = 1 After incrementing by 1: x = 13 y = 12 After decrementing by 1: x = 12 y = 13 |