C++の副作用に関して良く解らないので教えてください。

int a=0;
int b=0;
int func(int c){ b=a; return c; }

このとき、
func(++a);

を通ると、bに1が入ることは保障されますよね?

func(a++);

この場合はどうでしょうか?
bに0が入る?
bに1が入る?
鼻から悪魔?