Thread: C++ and Boolean Operators

1. C++ and Boolean Operators

Hello, I've recently taken on interest in C++, planning to start college and eventually aim for CS degree. Anyways, I've been checking out the tutorials and I have been trying to write a simple code using Boolean Operators.

I kind of understand the concept but there are no actual examples in the tutorials with Boolean Operators so I'm having a tough time with this code:

Code:
```#include <iostream>

using namespace std;

int main()
{
int a;

cout<<"I am thinking of a number from 1 to 15.\n";
cin>> a;
cin.ignore();
if ( a == 3 && 7  ){
cout<<"That is correct!";
}
else if ( a == !(3 && 7)  ){
cout<<"Try again.";
}
cin.get();
}```
When I input 3 it recognizes as TRUE but if I input 7 or any other number, I don't neither of the IF or ELSE IF statements.

2. this is how it should be;
if((a==3)||(a==7)); //or not and

similarly change the second part.

3. The following is not the correct way to check if a equals 3 and 7:
Code:
`if ( a == 3 && 7  )`
To check whether a equals 3 and 7, you would write
Code:
`if( a==3 && a==7)`
However, when two conditionals are and'ed together, both conditionals have to be true for the whole thing to be true. So, if the user enters 3, then a==3 is true but a==7 is false, so the whole thing is false. In plain english, a cannot be both 3 and 7. a can only be 3 OR 7. When two conditionals are or'ed together, only one of them has to be true for the whole thing to be true. So, if you write:
Code:
`if( a==3 || a==7)`
and the user enters 7, then a==3 is false and a==7 is true, so the whole thing is true, and therefore the code in the body of the if statement will execute.

When I input 3 it recognizes as TRUE but if I input 7 or any other number, I don't neither of the IF or ELSE IF statements.
To analyze why that happened, you have to know a couple of things about the way C++ works. Any expression that results in a value of 0 is false, and any expression that results in a value that is non-zero(e.g. -10, 1) is true. So, looking at this statement:
Code:
`if ( a == 3 && 7  )`
the C++ precedence rules say that statement is equivalent to:
Code:
`if(  (a==3) && 7 )`
If a is equal to 3, then a==3 is true. 7 is non-zero so it is true, so you end up with:
Code:
`if(true && true)`
which makes the whole thing true.

On the other hand, suppose a is equal to 7, then a==3 is false. 7 is non-zero so it is true, and you end up with:
Code:
`if(false && true)`
which makes the whole thing false.

4. Here's a little summary of how logical boolean operators work:

The operators:
Code:
```a == b //returns true if 'a' is equal to 'b'. this is NOT THE SAME AS 'a = b'
a && b //returns true if both 'a' and 'b' are true, returns false in all other cases
a || b // returns true if 'a' is true, if 'b' is true', or if both 'a' and 'b' or true. Only returns false if both 'a' and 'b' are false.```
you can replace 'a' and 'b' with any expressions which evaluate to a boolean value. These all associate left to right and are on the same level of operator precedence.

The expression "a && b || c" is evaluated like this "(a && b) || c".

Here's an example of how you might use boolean operators in a program:

Code:
```if ( (a == 3) || (a ==5) )  //execute "do stuff" if a == 3 is true, a ==5 is true, or they both are true.
//do stuff
else //execute "do other stuff" if a != 3 AND a != 5
//do other stuff```
the above code is the same as

Code:
```if ( (a == 3) || (a ==5) )
//do stuff
if ( (a != 3) && (a != 5) )
//do other stuff```
hope that helped.

Popular pages Recent additions