go to previous page   go to home page   go to next page hear noise highlighting

What suffix is chosen if (count+1) is equal to 5?

Answer:

suffix = "th";


Matching if's and else's

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 show what matches what, but here is a rule that works without braces.

Rule: Start with the first if and scan downward. Each else matches the first unmatched if above it. An if matches only one else and an else matches only one if. Continue scanning until you reach the end. Every else should be matched with a single if .


if ( count+1  == 2  )
  suffix = "nd";
else 
  if ( count+1 == 3  )
    suffix = "rd";
  else
    suffix = "th";

In the above, start at the top. Scan downward and find the first unmatched else . Match it with the unmatched if above it. Continue scanning downward. Find the next else, match it with the first unmatched if above it.

Indent the program to show the matching if's and else's. But remember that the compiler does not pay any attention to indenting.



Here is another example. If you follow the rule, the else matches the if above it. The first if has no matching else.


if ( a == -5  )
  abs = 5;
  if ( a == -7  )
    abs = 7
  else 
    abs = 10

QUESTION 12:

Here is another example. It is not indented properly. Use the rule to figure out which ifs and elses match. (Mouse over ifs to see their match.)


if ( a == b )
  
if ( d == e )
  total = 0;
  
else
  total = total + a;

else
  total = total + b;

go to previous page   go to home page   go to next page