Other operators

A collection of operators that do not fit into any of the other major categories.

# Notes

The evaluations of expression that designates the function to be called and all arguments are unsequenced with respect to each other (but there is a sequence point before the body of the function begins executing)

Although function call is only defined for pointers to functions, it works with function designators due to the function-to-pointer implicit conversion.

Functions that ignore unused arguments, such as printf, must be called with a prototype in scope (the prototype of such functions necessarily uses the trailing ellipsis parameter) to avoid invoking undefined behavior.

The current standard wording of the semantics of preparing function parameters is defective, because it specifies that parameters are assigned from arguments while calling, which incorrectly rejects const-qualified parameter or member types, and inappropriately applies the semantics of volatile which is unimplementable for function parameters on many platforms. A post-C11 defect report DR427 proposed change of such semantics from assignment to initialization, but was closed as not-a-defect.

A function call expression where expression consists entirely of an identifier and that identifier is undeclared acts as though the identifier is declared as

So the following complete program is valid C89:

# See also