Using C++ Relational Ops to Check if a Number is Even

  • C/C++
  • Thread starter ineedhelpnow
  • Start date
  • Tags
    C++
In summary, the given expression uses the modulus operator (%) to check if the value of userNum is an even number. If the result is equal to 0, then the number is even and "Even" is printed. Otherwise, "Odd" is printed. The modulus operator returns the remainder when dividing the first number by the second number, and for even numbers, the remainder is always 0.
  • #1
ineedhelpnow
651
0
Write an expression that will print "Even" if the value of userNum is an even number.

Code:
#include <iostream>
using namespace std;

int main() {
   int userNum = 0;

   userNum = 6;

   if (<STUDENT CODE>) { 
      cout << "Even" << endl; 
   }
   else {
      cout << "Odd" << endl;
   }

   return 0;
}

the <STUDENT CODE> is
Code:
userNum %2==0

i understand the %2 part but why equal to 0? how does the ==0 part detect that its an even number?
 
Technology news on Phys.org
  • #2
x %2 gives the remainder of x when divided by 2.

for odd numebr x %2 = 1 and for even number x % 2 = 0

so this check is made
 
  • #3
will it always be either x%2==0 or x%2==1?
 
  • #4
ineedhelpnow said:
will it always be either x%2==0 or x%2==1?

Yes it shall be as when we divide by 2 remainder can be 0 or 1 and no other value
 
  • #5
kaliprasad said:
Yes it shall be as when we divide by 2 remainder can be 0 or 1 and no other value

As long as userNum is nonnegative. If it is negative then the result will be 0 or -1, as defined by the C++ standard (which itself follows the Fortran definition of the modulo operation). In short, % is not "modulo", it's "division remainder", which may be negative as integer division always rounds towards zero, not negative infinity.

For instance, let $q$ be the quotient of $-3$ divided by $2$, which is $q = -1$ (round towards zero). Then $r = (-3) ~ \% ~ 2$ is defined as the unique integer satisfying $2q + r = -3$, that is, $r =-1$. So (-3) % 2 = -1.

That is also why I recommend only using % when working with unsigned integer types. It's very easy for people to mistake it for a modulo operation and introduce major security issues that can become very hard to find.

(well, to be specific up until the recent C++11, the sign of (-3) % 2 was implementation-defined, but essentially every processor on the planet will have returned -1; now, it must return -1)​
 

FAQ: Using C++ Relational Ops to Check if a Number is Even

How do I use C++ relational operators to check if a number is even?

To check if a number is even in C++, you can use the modulus operator (%). This operator returns the remainder of the division of two numbers. So, if the remainder of a number divided by 2 is 0, then the number is even.

Can I use other C++ relational operators to check if a number is even?

Yes, you can also use the equality (==) operator to check if the remainder of a number divided by 2 is equal to 0. Additionally, you can use the greater than (>) and less than (<) operators to check if the number is divisible by 2 without leaving a remainder.

What is the difference between using modulus and equality operators to check if a number is even?

The modulus operator gives you the remainder of a division, while the equality operator compares two values. So, using the modulus operator will give you a boolean value (true or false), while the equality operator will directly tell you if the number is even.

Can I use C++ relational operators to check if a negative number is even?

Yes, you can use C++ relational operators to check if a negative number is even. The same rules mentioned above apply, as the modulus operator will still give you the remainder of the division, and the equality operator will compare the value to 0.

Is there a limit to the size of the number that can be checked using C++ relational operators?

As long as the number can be represented in the data type you are using (int, float, double, etc.), you can use C++ relational operators to check if it is even. However, keep in mind that using larger numbers may lead to overflow errors, so it is important to choose the appropriate data type for your needs.

Similar threads

Replies
1
Views
6K
Replies
4
Views
5K
Replies
2
Views
12K
Replies
5
Views
2K
Replies
28
Views
29K
Replies
22
Views
3K
Back
Top