all c function is pass by value, the parameter evaluation order is not determined in standard except for a few operators. So how the compiler evaluate the parameter's value in which order is compiler-specific, which is also subject to optimization phase.
During programming, this side effect should be avoid.