Note the ambiguity in the following nested if
statement:
if (ratio > 10) if (ratio < 30) printf ("It is in the normal range.\n"); else printf ("It is ?.\n");
With what should you replace the question mark: expensive
or cheap
? As laid out on the page, it seems that
expensive
is the right answer. Laid out another way,
however, you might have the impression that cheap
is the right answer:
if (ratio > 10) if (ratio < 30) printf ("It is in the normal range.\n"); else printf ("It is ?.\n");
Because C pays no attention to layout, you need to know that
C assumes that each else
belongs to the nearest
if
that is not already matched with an else
. Thus,
the question mark would be replaced by expensive
.