The reason why the printed goodand Cislies in the fact that the parameters must be evaluated before can cause the upper level printf().
Then the return values ββare printed.
Note that C does not determine the order in which parameters are evaluated. There are no sequence points in the instruction. Therefore, the order is undefined. And the result may appear in any order. (hence why in this case they look inactive)
source
share