hi charlie,
both the ques have the same concept behind them.when u initialize a loop to a "false" the next statement in the loop would never be executed.hence u'll get the error of 'statement not reached'.but whenever u give a condition which may or maynot evaluate to a false, there is no error.u may say that logically
this for loop can be evaluated to a false at the first sight.for (int i = 0; i < 0; i++) x = 3;
but even then at compile time the compiler does not know whether it is true or not.hence only and only when u give the
word "false" there would be error.definitely if the loop body is empty then there would be no problem
hope this helps.