http://stackoverflow.com/questions/376278/parameter-evaluati...
https://www.securecoding.cert.org/confluence/display/seccode...
Basically, do not depend on the order of evaluation of arguments to a function call, because it is unspecified and left to the implementation to decide according to the C99 standard.
EDIT: Another explanation, pertinent to your example can be found here - http://c-faq.com/expr/evalorder2.html