What suffix is chosen if (count+1)
is equal to 5?
suffix = "th";
if ( count+1 == 2 ) <--- false: go to false branch suffix = "nd"; else if ( count+1 == 3 ) <--- false: go to inner false branch suffix = "rd"; else suffix = "th"; <--- inner false branch executed
The fragment shows how the nested if
works when
(count+1)
is equal to 5.
The outer if
is false,
so its false-branch is chosen.
Now the if
of that branch (the nested if
)
tests (count+1)
and picks its false-branch.
When (count+1)
is 4 or greater the "th" suffix is chosen.
It is sometimes hard to see exactly how the if's and else's nest in
programs like this.
Braces can be used to show what matches what,
but lets starts with a rule that does not talk about that.
Rule: Start with the first if
and work downward.
Each else
matches the closest previous
unmatched if
.
An if
matches only one
else
and an else
matches only one if
.
You should indent the program to show this, but remember that the compiler does not pay any attention to indenting. Here is the program fragment again showing the matching if's and else's.
if ( count+1 == 2 ) suffix = "nd"; else if ( count+1 == 3 ) suffix = "rd"; else suffix = "th";
Here is another example.
It is not indented properly.
Use the rule
to figure out which if
s and else
s match.
if ( a == b ) if ( d == e ) total = 0; else total = total + a; else total = total + b;