Open in App
Not now

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

• Difficulty Level : Basic
• Last Updated : 06 Jan, 2023

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 [0, y-1]
• x mod y <x/2 if x>=y and x mod y=x if x<y
• If y is 0, then division by zero is a compile-time error.

Below is the C/C++ program to demonstrate the working of the modulo operator:

C

 `// Program to illustrate the ` `// working of modulo operator ` ` `  `#include ` ` `  `int` `main(``void``) ` `{ ` `    ``int` `x, y; ` ` `  `    ``int` `result; ` ` `  `    ``x = 3; ` `    ``y = 4; ` `      ``// using modulo operator ` `    ``result = x % y; ` `    ``printf``(``"%d"``, result); ` ` `  `    ``result = y % x; ` `    ``printf``(``"\n%d"``, result); ` `   `  `    ``// for different values ` `    ``x = 4; ` `    ``y = 2; ` `    ``result = x % y; ` `    ``printf``(``"\n%d"``, result); ` ` `  `    ``return` `0; ` `} `

C++

 `// C++ Program to demonstrate the ` `// working of modulo operator ` `#include ` ` `  `using` `namespace` `std; ` ` `  `// Driver code ` `int` `main(``void``) ` `{ ` `  ``int` `x, y; ` `   `  `  ``int` `result; ` `   `  `  ``x = 3; ` `  ``y = 4; ` `   `  `  ``// using modulo operator ` `  ``result = x % y; ` `  ``cout << result << endl; ` ` `  `  ``result = y % x; ` `  ``cout << result << endl; ` ` `  `  ``// for different values ` `  ``x = 4; ` `  ``y = 2; ` `   `  `  ``result = x % y; ` `  ``cout << result; ` ` `  `  ``return` `0; ` `} ` ` `  `//    This code is contributed by Mayank Tyagi`

Output

```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 an error.

Below is the C/C++ program to demonstrate the restrictions of the modulo operator:

C

 `// Program to illustrate the ` `// working of modulo operator ` ` `  `#include ` ` `  `int` `main(``void``) ` `{ ` `    ``float` `x, y; ` ` `  `    ``float` `result; ` ` `  `    ``x = 2.3; ` `    ``y = 1.5; ` `   `  `    ``// modulo for floating point values ` `    ``result = x % y; ` `    ``printf``(``"%f"``, result); ` ` `  `    ``return` `0; ` `}`

C++

 `// C++ Program to demonstrate the ` `// restrictions of modulo operator ` `#include ` `using` `namespace` `std; ` ` `  `// Driver code ` `int` `main() ` `{ ` `  ``float` `x, y; ` ` `  `  ``x = 2.3; ` `  ``y = 1.5; ` `   `  `  ``// modulo for floating point values ` `  ``result = x % y; ` `  ``cout << result; ` ` `  `  ``return` `0; ` `} ` ` `  `// This code is contributed by Harshit Srivastava`

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;
^           ```

Modulo Operator for negative operands

The sign of the result for the modulo operator is machine-dependent for negative operands, as the action takes as a result of underflow or overflow.

Below is the C/C++ program to demonstrate the modulo operator for negative operands:

C

 `// C Program to illustrate the ` `// working of the modulo operator ` `// with negative operands ` ` `  `#include ` ` `  `int` `main(``void``) ` `{ ` `    ``int` `x, y; ` ` `  `    ``int` `result; ` ` `  `    ``x = -3; ` `    ``y = 4; ` `   `  `    ``// modulo for negative operands ` `    ``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; ` `}`

C++

 `// C++ Program to demonstrate the ` `// working of the modulo operator ` `// for negative operands ` `#include ` `using` `namespace` `std; ` ` `  `// Driver code ` `int` `main(``void``) ` `{ ` `  ``int` `x, y; ` ` `  `  ``int` `result; ` ` `  `  ``x = -3; ` `  ``y = 4; ` `   `  `  ``// modulo for negative operands ` `  ``result = x % y; ` `  ``cout << result << endl; ` ` `  `  ``x = 4; ` `  ``y = -2; ` `  ``result = x % y; ` `  ``cout << result << endl; ` ` `  `  ``x = -3; ` `  ``y = -4; ` `  ``result = x % y; ` `  ``cout << result; ` ` `  `  ``return` `0; ` `} ` ` `  `// This code is contributed by Harshit Srivastava`

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.

My Personal Notes arrow_drop_up
Related Articles