Logical Operators


The sample programs presented so far generally execute one statement after another. They usually do exactly the same thing each time they run. Although this is a good way to learn C++ programming, that's not how games operate. Games need to present players with different experiences each time they play. The most important tool for doing this is the C++ if-else statement, which we will discuss shortly. However, to use the if-else statement, programmers have to understand logical operators. Therefore, we'll take a brief look at them now.

Logical operators are pretty straightforward. In fact, you have seen them before in your math classes in school. Table 3.1 shows the C++ logical operators.

Table 3.1. The C++ Logical Operators

Operator

Description

<

Less than

<=

Less than or equal to

==

Equal to

!=

Not equal

!

Not

>=

Greater than or equal to

>

Greater than

&&

And

||

Or


Although you may have used different symbols for these in school, you're probably familiar with what they do. You use these operators in comparisons, which programmers call logical expressions. All logical expressions evaluate to TRue or false. Recall from chapter 2 that true and false are actual values in C++, just like numbers.

Note

Comparisons in logical expressions are also called conditions.


You've actually used logical operators in your programs already. chapter 2 showed their use with while and do-while loops. Table 3.2 gives some more examples of how to use logical operators.

Table 3.2. Using Logical Operators In Expressions

Expression

Meaning

thisValue <= thatValue

Evaluates to true if the variable thisValue contains a value that is less than or equal to the value in the variable thatValue. Otherwise, it evaluates to false.

thisValue != 100

Evaluates to true if thisValue is not equal to 100. Otherwise, it evaluates to false.

thisValue == 100

Evaluates to TRue if thisValue is equal to 100. Otherwise, it evaluates to false.

!(thisValue == 100)

Evaluates to true if thisValue is not equal to 100. Otherwise, it evaluates to false.

(thisValue < 100) && (thatValue != 10)

Evaluates to true if thisValue is less than 100 and that Value is not equal to 10. Otherwise, it evaluates to false.

(thisValue < 100) || (thatValue != 10)

Evaluates to true if thisValue is less than 100 or that Value is not equal to 10. Otherwise, it evaluates to false.


Some of the expressions in Table 3.2 deserve particular attention. The expression

 !(thisValue == 100) 


says the same thing as

 thisValue != 100 


To understand this expression, you need to know that in C++, everything in parentheses is done first. To evaluate

 !(thisValue == 100) 


you first evaluate

 thisValue == 100 


because it's in the parentheses. This expression evaluates to true when the variable

thisValue contains 100. If it contains any other value, the expression is false. If you then add the Not operator, which is the exclamation point, it negates the expression. That means if

 thisValue == 100 


evaluates to TRue, then

 !(thisValue == 100) 


evaluates to false. And any time

 thisValue == 100 


evaluates to false, it makes

 !(thisValue == 100) 


evaluate to true. The ! operator negates a logical condition.

Factoid

My experience as a college professor is that beginning programmers are often uncomfortable with using the ! operator. If you feel that way, don't bother using it. Any logical expression you can write with the ! operator can be written without it if you use other logical operators.


The last two expressions in Table 3.2 are also of particular interest. These are often called compound logical expressions because they put together more than one comparison or condition. When you're writing your programs, you make compound logical expressions with the And operator. You can also create them with the Or operator. How is this done?

The expression

 (thisValue<100) && (thatValue!=10) 


has two conditions:

 thisValue<100 


and

 thatValue!=10 


In order for the entire expression to evaluate to true, both the first and the second conditions must evaluate to true. If either of them evaluates to false, then the whole expression is false. As a result, expressions with an And operator tend to evaluate to false more than they evaluate to true.

If we rewrite the expression to make this

(thisValue<100) || (thatValue!=10)

then we're using the Or operator. This says that the entire expression is true if either the first or the second condition evaluates to true. The only time it's false is if both conditions are false.



Creating Games in C++(c) A Step-by-Step Guide
Creating Games in C++: A Step-by-Step Guide
ISBN: 0735714347
EAN: 2147483647
Year: N/A
Pages: 148

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net