Related Articles
Modulo Operator (%) in C/C++ with Examples
• Difficulty Level : Basic
• Last Updated : 23 Feb, 2021

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

## C

 `// Program to illustrate the``// working of modulo operator` `#include ` `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 ` `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;``}`
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 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.

My Personal Notes arrow_drop_up