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 x is not completely divisible by y, 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:
C
// 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;} |
C++
// Program to illustrate the// working of modulo operator#include <iostream>using namespace std;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; cout << result << endl; result = y % x; cout << result << endl; x = 4; y = 2; result = x % y; cout<<result; return 0;}// This code is contributed by Mayank Tyagi |
3 1 0
Restrictions of the modulo operator:
The modulo operator has quite some restrictions or limitations.
- 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:
C
// 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;} |
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;
^ 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.
C
// 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;} |
-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 mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.


