# FAQ: How to test whether integer is even or odd

• 12-24-2002
giggsy
FAQ: How to test whether integer is even or odd
Hi. I need to write a function that tests whether an integer is even or not. This is how far I've got. I wasn't sure if its best to use an 'if' statement in the function.

Code:

```/* a function that tests whether an integer is even, returning a true or false   answer */ #include <iostream> using namespace std; int main() {   int n = 0;   cout << "Enter a number: ";   cin >> n;   cout << test(n) << endl;   return 0; } int test(int n) {   if (n```
cheers.
• 12-24-2002
RoD
mod by two.

variable = variable % 2;
• 12-24-2002
Prelude
Code:

```#include <iostream> int main() {   int val;   std::cout<<"Enter a number: ";   std::cin>> val;   if ( val % 2 == 0 )     std::cout<< val <<" is even"<<std::endl;   else     std::cout<< val <<" is odd"<<std::endl; }```
-Prelude
• 12-24-2002
Polymorphic OOP
Or, if you want to optimize just do:

Value & 1

if the result of the expression is true then the number was odd, if false, then the number was even
• 12-24-2002
RoD
hmm, both seem about the same imo, i had only ever learned the modulous way of doing it.
• 12-24-2002
Polymorphic OOP
Bitwise operations are faster than division, multiplication, addition, subtraction because it's just a quick check on the bits.
• 12-24-2002
RoD
thnx for the knowledge.
• 12-24-2002
giggsy
I tried the following:

Code:

```/* a function that tests whether an integer is even, returning a true or false   answer */ #include <iostream> using namespace std; int evenTest(int); int main() {   int n = 0;   cout << "Enter a number: ";   cin >> n;   cout << evenTest(n) << endl;   return 0; } int evenTest(int n) {   if (n % 2 == 0)     cout << n << " is even" << endl; else     cout << n << " is odd" << endl; }```
It generates the following output:

Code:

```Enter a number: 10 10 is even 98476```
Why is 98476 generated?
Also, Polymorphic OOP, how would I implement Value & 1 ?
• 12-24-2002
Polymorphic OOP
It's result is 1 if it's odd and 0 if it's even

so

Code:

`std::cout << "Value is " << ( Value & 1 ? "odd" : "even" );`
• 12-24-2002
Polymorphic OOP
Quote:

Originally posted by giggsy
Why is 98476 generated?
Because you are "cout"ing the value that evenTest returns (which is garbage cuz you didn't return anything.

What you should do is:

Code:

```/* a function that tests whether an integer is even, returning a true or false   answer */ #include <iostream> using namespace std; bool evenTest(int); int main() {   int n = 0;   cout << "Enter a number: ";   cin >> n;   cout << n << " is " << ( evenTest(n) ? "even" : "odd" ) << endl;   return 0; } inline bool evenTest(int n) {  return n % 2 == 0; }```
• 12-24-2002
Eibro
Quote:

Originally posted by giggsy
I tried the following:

Code:

```/* a function that tests whether an integer is even, returning a true or false   answer */ #include <iostream> using namespace std; int evenTest(int); int main() {   int n = 0;   cout << "Enter a number: ";   cin >> n;   cout << evenTest(n) << endl;   return 0; } int evenTest(int n) {   if (n % 2 == 0)     cout << n << " is even" << endl; else     cout << n << " is odd" << endl; }```
It generates the following output:

Code:

```Enter a number: 10 10 is even 98476```
Why is 98476 generated?
Also, Polymorphic OOP, how would I implement Value & 1 ?

That random number is generated because you're printing the result of a function which is supposed to return an int, but actually returns nothing.
• 12-24-2002
Stoned_Coder
Code:

```const char* EvenOrOdd( int value) {     if(value&1) return"odd";     return "even"; }```