The controlling expression of an if statement shall have scalar type.
Semantics
In both forms, the first substatement is executed if the expression
compares unequal to 0. In the else form, the second substatement is
executed if the expression compares equal to 0. If the first
substatement is reached via a label, the second substatement is not
executed.
An else is associated with the lexically immediately preceding else
-less if that is in the same block (but not in an enclosed block).