Understanding Increment and Decrement Operators in C: A Comprehensive Guide

Explore the increment (++) and decrement (--) operators in C programming. Learn how these unary operators function, their usage in loops and pointer arithmetic, and the differences between prefix and postfix forms. Master these essential concepts to enhance your coding skills in C!



Increment and Decrement Operators in C

The increment operator (++) increases the value of a variable by 1, while the decrement operator (--) decreases the value. These operators are commonly used in loops and pointer arithmetic.

Both ++ and -- are unary operators and can be used in either prefix or postfix forms.

Example of Increment and Decrement Operators

The following example demonstrates the use of increment and decrement operators with different variations:

Code

#include <stdio.h>

int main() {
  int a = 5, b = 5, c = 5, d = 5;
  
  a++; // Postfix increment
  ++b; // Prefix increment
  c--; // Postfix decrement
  --d; // Prefix decrement

  printf("a = %d\n", a);
  printf("b = %d\n", b);
  printf("c = %d\n", c);
  printf("d = %d\n", d);

  return 0;
}
Output

a = 6
b = 6
c = 4
d = 4

Example Explanation

In this example, a++ and ++a both increment the value of a by 1. Similarly, a-- and --a both decrement the value of a by 1. However, a++ increments a after its value is used, while ++a increments a before its value is used.

Types of Increment Operator

Pre (Prefix) Increment Operator

The prefix increment operator (++variable_name) increases the value of a variable by 1 before its value is used in an expression.

Code

#include <stdio.h>

int main() {
  int x = 10;

  int y = 10 + ++x;

  printf("x = %d, y = %d\n", x, y);

  return 0;
}
Output

x = 11, y = 21

Post (Postfix) Increment Operator

The postfix increment operator (variable_name++) increases the value of a variable by 1 after its value is used in an expression.

Code

#include <stdio.h>

int main() {
  int x = 10;

  int y = 10 + x++;

  printf("x = %d, y = %d\n", x, y);

  return 0;
}
Output

x = 11, y = 20

Types of Decrement Operator

Pre (Prefix) Decrement Operator

The prefix decrement operator (--variable_name) decreases the value of a variable by 1 before its value is used in an expression.

Code

#include <stdio.h>

int main() {
  int x = 10;

  int y = 10 + --x;

  printf("x = %d, y = %d\n", x, y);

  return 0;
}
Output

x = 9, y = 19

Post (Postfix) Decrement Operator

The postfix decrement operator (variable_name--) decreases the value of a variable by 1 after its value is used in an expression.

Code

#include <stdio.h>

int main() {
  int x = 10;

  int y = 10 + x--;

  printf("x = %d, y = %d\n", x, y);

  return 0;
}
Output

x = 9, y = 20

More Examples of Increment and Decrement Operators

Example 1

The following example highlights the use of prefix and postfix increment/decrement operators:

Code

#include <stdio.h>

int main(){
   char a = 'a', b = 'M';
   int x = 5, y = 23;

   printf("a: %c b: %c\n", a, b);
   
   a++;
   printf("Postfix increment a: %c\n", a);
   
   ++b;
   printf("Prefix increment b: %c\n", b);

   printf("x: %d y: %d\n", x, y);
   
   x--;
   printf("Postfix decrement x: %d\n", x);
   
   --y;
   printf("Prefix decrement y: %d\n", y);

   return 0;
}
Output

a: a b: M
Postfix increment a: b
Prefix increment b: N

x: 5 y: 23
Postfix decrement x: 4
Prefix decrement y: 22

Example 2

In the following code, the initial values of x and y are the same, but printf() displays different values:

Code

#include <stdio.h>

int main(){
   int x = 5, y = 5;

   printf("x: %d y: %d\n", x, y);
   printf("Postfix increment x: %d\n", x++);
   printf("Prefix increment y: %d\n", ++y);

   return 0;
}
Output

x: 5 y: 5
Postfix increment x: 5
Prefix increment y: 6

Operator Precedence of Increment and Decrement Operators

Increment and decrement operators have higher precedence than most other operators. Postfix operators (++, --) have higher precedence than prefix operators.

Example 1

In the following example, the assignment operator has higher precedence than the postfix increment operator:

Code

#include <stdio.h>

int main(){
   int x = 5, z;

   printf("x: %d \n", x);

   z = x++;
   printf("x: %d z: %d\n", x, z);

   return 0;
}
Output

x: 5 
x: 6 z: 5

Example 2

In this example, the prefix increment operator has higher precedence than the assignment operator:

Code

#include <stdio.h>

int main(){
   int x = 5, y = 5, z;

   printf("x: %d y: %d\n", x, y);

   z = ++y;
   printf("y: %d z: %d\n", y ,z);

   return 0;
}
Output

y: 5
y: 6 z: 6

Example 3

In this example, both prefix and postfix operators are used in the same expression:

Code

#include <stdio.h>

int main(){
   int x = 5, y = 5, z;

   z = x++ + ++y;
   printf("x: %d y: %d z: %d\n", x, y, z);

   return 0;
}
Output

x: 6 y: 6 z: 11

Using the Increment Operator in Loop

In C, the increment operator is commonly used in for loops to update the loop variable.

Code

#include <stdio.h>

int main(){
   int x;

   for (x = 1; x <= 5; x++){
      printf("x: %d\n", x);
   }
   
   return 0;
}
Output

x: 1
x: 2
x: 3
x: 4
x: 5