Modulo Operator (%) in C/C++ with Examples

The modulo operator, denoted by %, is an arithmetic operator.

The modulo division operator produces the remainder of an integer division.

Syntax: If x and y are integers, then the expression:

x % y

produces the remainder when x is divided by y.

Return Value:



  • If y completely divides x, the result of the expression is 0.
  • If y is not completely divisible by x, then the result will be the remainder in the range [1, x-1].
  • If x is 0, then division by zero is a compile-time error.

For example: Consider the following code:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program to illustrate the
// working of modulo operator
  
#include <stdio.h>
  
int main(void)
{
  
    // To store two integer values
    int x, y;
  
    // To store the result of
    // the modulo expression
    int result;
  
    x = 3;
    y = 4;
    result = x % y;
    printf("%d", result);
  
    result = y % x;
    printf("\n%d", result);
  
    x = 4;
    y = 2;
    result = x % y;
    printf("\n%d", result);
  
    return 0;
}

chevron_right


Output:

3
1
0

Restrictions of the modulo operator:
The modulo operator has quite some restrictions or limitations.

  1. The % operator cannot be applied to floating-point numbers i.e float or double. If you try to use the modulo operator with floating-point constants or variables, the compiler will produce a error:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Program to illustrate the
    // working of modulo operator
      
    #include <stdio.h>
      
    int main(void)
    {
      
        // To store two integer values
        float x, y;
      
        // To store the result of
        // the modulo expression
        float result;
      
        x = 2.3;
        y = 1.5;
        result = x % y;
        printf("%f", result);
      
        return 0;
    }

    chevron_right

    
    

    Compilation Error:

    Compilation Error in C code :- prog.c: In function 'main':
    prog.c:19:16: error:
     invalid operands to binary % (have 'float' and 'float')
         result = x % y;
                    ^           
    
  2. The sign of the result for modulo operator is machine-dependent for negative operands, as the action takes as a result of underflow or overflow.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Program to illustrate the
    // working of the modulo operator
      
    #include <stdio.h>
      
    int main(void)
    {
      
        // To store two integer values
        int x, y;
      
        // To store the result of
        // the modulo expression
        int result;
      
        x = -3;
        y = 4;
        result = x % y;
        printf("%d", result);
      
        x = 4;
        y = -2;
        result = x % y;
        printf("\n%d", result);
      
        x = -3;
        y = -4;
        result = x % y;
        printf("\n%d", result);
      
        return 0;
    }

    chevron_right

    
    

    Output:

    -3
    0
    -3
    

    Note: Some compilers may show the result of the expression as 1 and other may show -1. It depends on the compiler.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : shubhamkumarlhh