What suffix is chosen if (count+1)
is equal to 5?
suffix = "th";
Here is how the nested if
works when
(count+1)
is equal to 5:
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 exectued
When (count+1)
is 4 or greater the "th" suffix will be 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. The rule is:
Start with the firstif
and work downward. Eachelse
matches the closest previous unmatchedif
. Anif
matches only oneelse
and anelse
matches only oneif
.
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 ifs and elses.
if ( count+1 == 2 ) suffix = "nd"; else if ( count+1 == 3 ) suffix = "rd"; else suffix = "th";
The "if
" and "else
" of a matching pair
are part of one "if
statement."
For example,
the red pair above make are part of one statement so
the over-all structure of the program fragment is:
if ( count+1 == 2 ) suffix = "nd"; else false branch
Here is another example.
It is not indented properly.
Use the rule
to figure out which if
s and if
s match.
if ( a == b ) if ( d == e ) total = 0; else total = total + a; else total = total + b;