Modulo Operator
Part of the Fundamentals section of Coddy's C++ journey — lesson 17 of 74.
The modulo operator % gives the remainder of a division. In C++, it's used with a simple syntax:
result = dividend % divisor;- dividend: The number being divided.
- divisor: The number that divides the dividend.
- result: The remainder of the division.
For example:
result = 10 % 3;Here, 10 is divided by 3. 3 goes into 10 three times, with a remainder of 1. So, result will be 1.
Usually modulo is used for checking if a number is even or odd:
- If a number is even, dividing it by 2 will leave a remainder of 0.
- If a number is odd, dividing it by 2 will leave a remainder of 1.
When working with floating-point numbers (doubles) in C++, you cannot use the modulo operator % directly. Instead, you need to use the fmod() function from the <cmath> library. It works similarly to the modulo operator but keeps the decimal precision. For example:
#include <cmath>
double result = fmod(5.2, 2.0);
// result is 1.2Here's how it works: 2.0 goes into 5.2 two times (4.0), and the remainder is 1.2 (5.2 - 4.0 = 1.2).
Another example:
double result = fmod(7.8, 3.5);
// result is 0.8When the divisor is larger than the dividend, the result equals the dividend. This applies to both % and fmod().
5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5Why? The divisor fits zero times, so the entire dividend is the remainder.
Challenge
BeginnerWrite a code that initializes three variables, a (int), b (double) and c (int) with the values 9, 2.6, and 11 (respectively).
After that, initialize the following variables:
d (int)that will hold the result ofamodulo2e (int)that will hold the result ofamodulo3f (double)that will hold the result ofbmodulo1.5g (double)that will hold the result ofbmodulo3.9h (int)that will hold the result ofcmodulo10
Check out the result and see how different dividends and divisors affect the result.
Cheat sheet
The modulo operator % gives the remainder of a division:
result = dividend % divisor;Example:
result = 10 % 3; // result is 1Common use case - checking if a number is even or odd:
- Even numbers:
number % 2 == 0 - Odd numbers:
number % 2 == 1
For floating-point numbers, use fmod() from <cmath>:
#include <cmath>
double result = fmod(5.2, 2.0); // result is 1.2
double result2 = fmod(7.8, 3.5); // result2 is 0.8When the divisor is larger than the dividend, the result equals the dividend. This applies to both % and fmod().
Try it yourself
#include <iostream>
#include <cmath>
int main() {
// Type your code below
// Don't change the line below
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
std::cout << "d = " << d << std::endl;
std::cout << "e = " << e << std::endl;
std::cout << "f = " << f << std::endl;
std::cout << "g = " << g << std::endl;
std::cout << "h = " << h << std::endl;
return 0;
}This lesson includes a short quiz. Start the lesson to answer it and track your progress.
All lessons in Fundamentals
4Operators Part 1
Arithmetic OperatorsModulo OperatorIncrement/DecrementPost Increment/DecrementArithmetic ShortcutsComparison OperatorsString Comparison3Variables Part 2
Type DeclarationNaming ConventionsRecap - Initialize VariablesType Casting Part 1Type Casting Part 26Decision Making
If StatementIf - ElseSwitch StatementConditional OperatorRecap - If ElseNested If - Else