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 four 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:
Incomplete Rule for Matching if and else: Start with the first "if" and work downward. Each "else" matches the closest preceeding 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";
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, but by using the rule you will be able 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;