The semicolon following the conditional is an empty statement; it ends the if statement equivalently to "if (something()) { }". It's not often seen, but sometimes can be found in:
for (i = 0; a[i] != x; i++) ;
to find the first index equaling x.
Personally, I always use braces in conditional and loop statements, so I'll never have the empty statement semicolon. But that's me.
> Personally, I always use braces in conditional and loop statements, so I'll never have the empty statement semicolon. But that's me.
But if you have
if (something()); { somethingOther(); }
Then you have a new problem: you intended the braced statement to execute iff the if-statement evaluated to true. But since you put the semicolon after if by accident, now the braced part will execute no matter what the if-condition evaluates to.
(my point was about unintentional use of semicolon after if-statement - in which case always using braces doesn't seem to help.)
Personally, I always use braces in conditional and loop statements, so I'll never have the empty statement semicolon. But that's me.