The issue here is that the order of function argument evaluation is undefined. If the commas weren't inside of a function call, they would result in sequence points. So, this would be well defined:
int a = 0, b, c;
b = a++, c = a++;
But, there is no defined order in which to evaluate function arguments.