Increment and Decrement Operators in C

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.

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: #

  1. Prefix increment/decrement operator.
  2. 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:

y = ++x;

means that first the increment the value of x then assign this value to y.

Similarly, the statement:

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.

#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:

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:

y = x++;

means that first the value of x is assigned to y then x is incremented.

Similarly, the statement:

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.

#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:

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