Re: 'C' Operators precedence

H. Peter Anvin (
21 May 1998 00:57:55 GMT

Followup to: <>
By author: "Richard B. Johnson" <>
In newsgroup:
> However, the () for passed parameters to a macro, if it exists,
> requires that the contents of () be evaluated before the macro is
> expanded, because () has the highest presedence of any 'C' operator.

The () as used in a macro expansion *isn't* a C operator. It's a
preprocessor operator, and typically isn't present in the output to
the C compiler.

Furthermore, you're once again confusing precedence with sequence
points. They have pretty much NOTHING to do with each other!

The ONLY sequence point for a function call is that its arguments must
be evaluated before the function is executed, if that is what you
meant with the previous article. However, it says *nothing* about
when the function is evaluated as opposed to other functions, nor of
the evaluation order of other functions in relation to it, unless
their return values are required to compute the arguments of the
function in question.


    PGP: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD  1E DF FE 69 EE 35 BD 74
    See for web page and full PGP public key
        I am Bahá'í -- ask me about it or see
   "To love another person is to see the face of God." -- Les Misérables

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to