Goal: To be able to implement if statements into code.

Relational Operators

Relational operators find any similarities between two values, typically variables. A relational operator takes two values or expressions, compares the two, and returns a boolean value. A boolean value comes in one of two states: true or false. For a computer, true is stored as a 1, and false is stored as a 0.

An example of a relational operator is ==. It checks whether two values/expressions are equal to each other. The symbol == is different from =, an operator only used for variable assignments. Be sure not to mix up the two operators.

Example Code:
<span id="L1" class="line"><span class="cp">#include &lt;iostream&gt;</span></span>
<span id="L2" class="line"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span></span>
<span id="L3" class="line"></span>
<span id="L4" class="line"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span>
<span id="L5" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="mi">3</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>        <span class="c1">// compares ints</span></span>
<span id="L6" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="mf">2.6</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>      <span class="c1">// compares double and ints</span></span>
<span id="L7" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="sc">'A'</span> <span class="o">==</span> <span class="sc">'A'</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>    <span class="c1">// compares characters</span></span>
<span id="L8" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="nb">true</span> <span class="o">==</span> <span class="nb">false</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="c1">// compares boolean values</span></span>
<span id="L9" class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span></span>
<span id="L10" class="line"><span class="p">}</span></span>
Output:
1
0
1
0
Note
<< is an operator that is evaluated before relational operators. Therefore, when outputting values with relational operators, parentheses must surround the relational operator.

Relational operators are able to work with integers, floating numbers, characters, and boolean values. Values of different types can also be compared to each other, although computers use complicated ways to compare variable types such as characters.

The following are more examples of relational operators.

Name Symbol Description Examples Result

Not equal to

!=

Checks if two values are different

3 != 4
5 != 5

true
false

Greater than

>

Checks if the first value is greater than the second

5 > 0
6 > 6

true
false

Less than

<

Checks if the first value is less than the second

3 < 4
5 < 3

true
false

Greater than or equal to

>=

Checks if the first value is greater than or equal to the second value

5 >= 4
4 >= 4

true
true

Less than or equal to

<=

Checks it the first value is less than or equal to the second value

3 <= 3
4 <= 3

true false

Logical Operators

Multiple comparisons can be done at once by using logical operators. These logical operators are used to manipulate boolean values, typically boolean values returned from relational operations. For example, a computer can check if a number is both less than a certain value and greater than a certain value. Relational operators are performed before logical operators. The following are examples of common logical operators.

Name Symbol Description Examples Result

AND

&&

Returns true only if both sides are true

true && true
false && true

true
false

OR

||

Returns true when either side is true

true || false
false || false

true
false

NOT

!

Returns true if value is false and returns false if value is true

!(true)
!(false)

false
true

Example Code:
<span id="L1" class="line"><span class="cp">#include &lt;iostream&gt;</span></span>
<span id="L2" class="line"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span></span>
<span id="L3" class="line"></span>
<span id="L4" class="line"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span>
<span id="L5" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">((</span><span class="mi">3</span> <span class="o">&lt;</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="mi">6</span> <span class="o">==</span> <span class="mi">7</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span></span>
<span id="L6" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="mi">5</span> <span class="o">!=</span> <span class="mi">6</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="p">(</span><span class="mi">4</span> <span class="o">&gt;=</span> <span class="mi">4</span><span class="p">)))</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span></span>
<span id="L7" class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span></span>
<span id="L8" class="line"><span class="p">}</span></span>
Output:
0
1

Try to follow the process of the computer from all the inner brackets to the outer brackets.

If Statements

An if statement is the simplest way of controlling the order in which commands are executed. The order in which actions are executed is called control flow. If statements basically tell the program to do a specific set of commands if a certain condition is met.

The basic outline of an if statement looks like the following:

<span id="L1" class="line"><span class="k">if</span> <span class="p">(</span><span class="n">condition</span><span class="p">)</span> <span class="p">{</span></span>
<span id="L2" class="line">    <span class="c1">//code to be run if the condition results to true</span></span>
<span id="L3" class="line"><span class="p">}</span></span>
<span id="L4" class="line"><span class="c1">// rest of the code</span></span>

Inside the parenthesis will be a condition that will result either true or false. Normally, the if statement will have variables being compared using relational operators and/or logical operators. Notice how the condition does not need to end with a semicolon. Inside the braces of an if statement will be all the commands that the computer will execute if the condition results to true. If the condition results to false, everything inside the braces will be skipped. In order to make a code file much easier to read, indenting all commands inside an if statement is encouraged.

Note
Do not initialize a variable within an if structure and use that variable outside the if structure. This subject will be explained in more detail in the next chapter.
Example Code:
<span id="L1" class="line"><span class="c1">// this code will check if a number is positive</span></span>
<span id="L2" class="line"><span class="cp">#include &lt;iostream&gt;</span></span>
<span id="L3" class="line"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span></span>
<span id="L4" class="line"></span>
<span id="L5" class="line"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span>
<span id="L6" class="line">    <span class="kt">int</span> <span class="n">num</span><span class="p">;</span>            <span class="c1">// initializes an integer variable</span></span>
<span id="L7" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Type in any number."</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span></span>
<span id="L8" class="line">    <span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">num</span><span class="p">;</span>         <span class="c1">// gets user input</span></span>
<span id="L9" class="line">    <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>      <span class="c1">// all positive numbers are greater than 0</span></span>
<span id="L10" class="line">        <span class="c1">// if num is positive, this message will be displayed</span></span>
<span id="L11" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is a positive number."</span><span class="p">;</span></span>
<span id="L12" class="line">    <span class="p">}</span>                   <span class="c1">// if num is negative or zero, output is skipped</span></span>
<span id="L13" class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span></span>
<span id="L14" class="line"><span class="p">}</span></span>
Sample Run:
Type in any number.
8
8 is a positive number.

In the example above, no message will appear if the number inputted is negative or zero. In order to put a message stating that a number is negative or zero, a second and third if statement could be added. However, there is a cleaner way to have the program output that message.

Else and Else if Statements

Else and Else if statements extend off the original if statement. They make a program run a different set of commands if the conditions in an if statement results false. An if structure that includes an else if and else statement will resemble the following:

<span id="L1" class="line"><span class="k">if</span> <span class="p">(</span><span class="n">condition1</span><span class="p">)</span> <span class="p">{</span></span>
<span id="L2" class="line">    <span class="c1">// code to be run if condition 1 results true</span></span>
<span id="L3" class="line"><span class="p">}</span></span>
<span id="L4" class="line"><span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">condition2</span><span class="p">)</span> <span class="p">{</span></span>
<span id="L5" class="line">    <span class="c1">// code if condition 1 results false but condition 2 results true</span></span>
<span id="L6" class="line"><span class="p">}</span></span>
<span id="L7" class="line"><span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">condition3</span><span class="p">)</span> <span class="p">{</span></span>
<span id="L8" class="line">    <span class="c1">// more code</span></span>
<span id="L9" class="line"><span class="p">}</span></span>
<span id="L10" class="line"><span class="c1">// the number of else if statements could continue...</span></span>
<span id="L11" class="line"><span class="k">else</span> <span class="p">{</span></span>
<span id="L12" class="line">    <span class="c1">// code to be run if all previous conditions result false</span></span>
<span id="L13" class="line"><span class="p">}</span></span>
flowchart of if statement logic

The program will always check the initial condition first and will check following conditions if all previous conditions result false. For example, if condition 2 results to true, but condition 1 also results to true, the program will prioritize the first set of code. Once the program is done executing the commands inside an if, else if, or else statement, the program will skip the rest of the if structure. This means that if the first condition results true, the program ignores all other if conditions inside the if structure. A program is able to have multiple else if statements within one if structure. However, an if structure can only have one else statement. Else if statements and else statements are completely optional and either could be omitted from the if structure.

Below is the same code modified to display messages for positive, negative numbers and zero.

<span id="L1" class="line"><span class="cp">#include &lt;iostream&gt;</span></span>
<span id="L2" class="line"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span></span>
<span id="L3" class="line"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span>
<span id="L4" class="line">    <span class="kt">int</span> <span class="n">num</span><span class="p">;</span></span>
<span id="L5" class="line">    <span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">num</span><span class="p">;</span></span>
<span id="L6" class="line">    <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>        <span class="c1">// all positive numbers are greater than 0</span></span>
<span id="L7" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is an even number."</span><span class="p">;</span> <span class="c1">// skips to line 16</span></span>
<span id="L8" class="line">    <span class="p">}</span></span>
<span id="L9" class="line">    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>   <span class="c1">// all negative numbers are less than 0</span></span>
<span id="L10" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is a negative number."</span><span class="p">;</span> <span class="c1">// skips to line 16</span></span>
<span id="L11" class="line">    <span class="p">}</span></span>
<span id="L12" class="line">    <span class="k">else</span> <span class="p">{</span>               <span class="c1">// 0 is neither greater or less than 0</span></span>
<span id="L13" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is not positive nor negative."</span><span class="p">;</span></span>
<span id="L14" class="line">    <span class="p">}</span></span>
<span id="L15" class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span></span>
<span id="L16" class="line"><span class="p">}</span></span>

In Summary

  • Relational Operators compare two values/expressions and returns a boolean value

  • Logical Operators manipulate boolean values and return one boolean value

  • Arithmetic Operators are executed before relational operators, which are executed before logical operators

  • The order in which a computer executes code is called control flow

  • If statements modify control flow by giving the program extra commands if a condition results to true

  • else if and else statements can be added to an if structure

  • The program, once finding a condition that results true in an if statement, will perform all commands and immediately skip to the end of the if structure.

Further Reading for If Statements

XOR

The XOR operator (^) is an operator that can be used like a logical operator.

This operator is able to take two boolean values and return true if only one of the given values is true. If both or neither boolean values are true, it will return false. The reason why this operator is not a logical operator is because it is a bitwise operator and could be used in scenarios beyond the scope of this chapter.

Examples Results

true ^ true

true ^ false

false ^ true

false ^ false

false

true

true

false

Comparing Characters

Each character has its own numerical representation. When a variable stores a character, the variable is holding a number that corresponds to that character. The characters and their corresponding number follows the American Standard Code for Information Interchange (ASCII). In C++, each character can be referred to by using either the character itself enclosed by single quotation marks ('A') or their numerical representation (65).

A table displaying each character’s corresponding number can be obtained here:

In the code below, the value of the character variable is set to 'A':

<span id="L1" class="line"><span class="kt">char</span> <span class="n">var</span> <span class="o">=</span> <span class="mi">65</span><span class="p">;</span></span>

When a character is being used with a relational operator in C++, the numerical representation of that character is being compared and not the character itself. So the following two excerpts of code perform the same task:

Example 1
<span id="L1" class="line"><span class="kt">char</span> <span class="n">c</span> <span class="o">=</span> <span class="mi">111</span><span class="p">;</span></span>
<span id="L2" class="line"></span>
<span id="L3" class="line"><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">c</span> <span class="o">&gt;</span> <span class="sc">'a'</span><span class="p">);</span></span>
Example 2
<span id="L1" class="line"><span class="kt">char</span> <span class="n">c</span> <span class="o">=</span> <span class="sc">'o'</span><span class="p">;</span></span>
<span id="L2" class="line"></span>
<span id="L3" class="line"><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">c</span> <span class="o">&gt;</span> <span class="mi">97</span><span class="p">);</span></span>

This is how C++ uses characters with relational operators.

Switch Statements

Switch Statements are alternative ways of control flow that is used whenever an if structure would lead to many else if statements in code. They work in the same way as if statements but are more concise when the number of conditions is large. It is used over an if structure whenever the condition is whether or not a variable is equal to a certain value.

A switch statement resembles the following:

<span id="L1" class="line"><span class="k">switch</span> <span class="p">(</span><span class="n">variable</span> <span class="n">name</span><span class="p">)</span> <span class="p">{</span></span>
<span id="L2" class="line"><span class="k">case</span> <span class="n">possibleValue</span><span class="p">:</span></span>
<span id="L3" class="line">    <span class="c1">// your code</span></span>
<span id="L4" class="line">    <span class="k">break</span><span class="p">;</span></span>
<span id="L5" class="line"><span class="k">case</span> <span class="n">possibleValue2</span><span class="p">:</span></span>
<span id="L6" class="line">    <span class="c1">// your code</span></span>
<span id="L7" class="line">    <span class="k">break</span><span class="p">;</span></span>
<span id="L8" class="line"><span class="c1">// the number of cases may continue</span></span>
<span id="L9" class="line"><span class="k">default</span><span class="o">:</span></span>
<span id="L10" class="line">    <span class="c1">// your code</span></span>
<span id="L11" class="line"><span class="p">}</span></span>

In a switch statement, the default case acts as an else statement in an if structure. The purpose of the break statements will be explained in the following chapter. Switch statements are not required as they do the same task as if structures.

Example Code:
<span id="L1" class="line"><span class="cp">#include &lt;iostream&gt;</span></span>
<span id="L2" class="line"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span></span>
<span id="L3" class="line"></span>
<span id="L4" class="line"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span></span>
<span id="L5" class="line">    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"What's your mark?"</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="c1">// asks for a mark</span></span>
<span id="L6" class="line">    <span class="kt">char</span> <span class="n">mark</span><span class="p">;</span>              <span class="c1">// char variable to store mark</span></span>
<span id="L7" class="line">    <span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">mark</span><span class="p">;</span></span>
<span id="L8" class="line">    <span class="k">switch</span><span class="p">(</span><span class="n">mark</span><span class="p">){</span>           <span class="c1">// checks value of mark</span></span>
<span id="L9" class="line">    <span class="k">case</span> <span class="sc">'A'</span> <span class="p">:</span>              <span class="c1">// checks if mark == 'A'</span></span>
<span id="L10" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Amazing!"</span><span class="p">;</span> <span class="c1">// output if mark == 'A'</span></span>
<span id="L11" class="line">        <span class="k">break</span><span class="p">;</span></span>
<span id="L12" class="line">    <span class="k">case</span> <span class="sc">'B'</span> <span class="p">:</span>              <span class="c1">// checks if mark == 'B'</span></span>
<span id="L13" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Nice nice."</span><span class="p">;</span></span>
<span id="L14" class="line">        <span class="k">break</span><span class="p">;</span></span>
<span id="L15" class="line">    <span class="k">case</span> <span class="sc">'C'</span> <span class="p">:</span>              <span class="c1">// checks if mark == 'C'</span></span>
<span id="L16" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"You're getting there."</span><span class="p">;</span></span>
<span id="L17" class="line">        <span class="k">break</span><span class="p">;</span></span>
<span id="L18" class="line">    <span class="k">case</span> <span class="sc">'D'</span> <span class="p">:</span></span>
<span id="L19" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Try Harder."</span><span class="p">;</span></span>
<span id="L20" class="line">        <span class="k">break</span><span class="p">;</span></span>
<span id="L21" class="line">    <span class="k">default</span> <span class="o">:</span></span>
<span id="L22" class="line">        <span class="c1">// default statement if all previous return false</span></span>
<span id="L23" class="line">        <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"That's not a rank!"</span><span class="p">;</span></span>
<span id="L24" class="line">    <span class="p">}</span></span>
<span id="L25" class="line">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span></span>
<span id="L26" class="line"><span class="p">}</span></span>
Sample Case:
What's your mark?
A
Amazing!
Sample Case 2:
What's your mark?
D
Try Harder.
Sample Case 3:
What's your mark?
R
That's not a rank!