consider the statement :

Code:
i >= 0 ? positive_case() : negative_case();
Does :? need to call and evaluate both functions to execute, or does it just
call and evaluate one or the other function according to the conditional expression?

It's confusing me because I don't know how function calls are placed in the
hierarchy of order of operations. If you consider the absolute value of integer i in this statement :

Code:
abs_i = i >= 0 ? i : -i;
It can't be written like this :

Code:
i >= 0 ? abs_i = i : abs_i = -i;     /* doesn't work */
because the assignment operator is of lower precedence than :?. You need
parenthesis :

Code:
i >= 0 ? (abs_i = i) : (abs_i = -i);     /* works */
which implies that :? must first evaluate all its operands. So, I guess what I'm asking is, is it bad programming practice to use function calls in such an implementation? I know how it behaves on my compiler, but I don't know what standard C guarantees of this.