> It is undefined because the while could evaluate from the right,
No - the order in which && and || are evaluated is very specifically defined.