Nested if...else statements test for multiple cases by placing if
...else
selection statements inside other if
...else
selection statements. For example, the following if
...else
statement displays A
for exam grades greater than or equal to 90, B
for grades in the range 80 to 89, C
for grades in the range 70 to 79, D
for grades in the range 60 to 69 and F
for all other grades:
if ( studentGrade >= 90 ) // 90 and above gets "A"
cout << "A";
else
if ( studentGrade >= 80 ) // 80-89 gets "B"
cout << "B";
else
if ( studentGrade >= 70 ) // 70-79 gets "C"
cout << "C";
else
if ( studentGrade >= 60 ) // 60-69 gets "D"
cout << "D";
else // less than 60 gets "F"
cout << "F";
If studentGrade
is greater than or equal to 90, the first four conditions are true, but only the statement after the first test executes. Then, the program skips the else
-part of the “outermost” if
...else
statement.
Many programmers write the preceding statement as
if ( studentGrade >= 90 ) // 90 and above gets "A"
cout << "A";
else if ( studentGrade >= 80 ) // 80-89 gets "B"
cout << "B";
else if ( studentGrade >= 70 ) // 70-79 gets "C"
cout << "C";
else if ( studentGrade >= 60 ) // 60-69 gets "D"
cout << "D";
else // less than 60 gets "F"
cout << "F";
The two forms are identical except for the spacing and indentation, which the compiler ignores. The latter form is popular because it avoids deep indentation of the code to the right, which can force lines to wrap.
Performance Tip 4.1
A nested if...else statement can perform much faster than a series of single-selection if statements because of the possibility of early exit after one of the conditions is satisfied.
Performance Tip 4.2
In a nested if...else statement, test the conditions that are more likely to be true at the beginning of the nested statement. This will enable the nested if...else statement to run faster by exiting earlier than if infrequently occurring cases were tested first.