Desde un punto de vista gramatical, los parámetros de una llamada de función forman una expresión-lista opcional dentro de paréntesis. Una lista de expresiones consiste en una o más asignación-expresión separadas por un token de coma. Una coma solo puede significar un operador de coma donde se espera una expresión .
El operador coma hace un expresión de un expresión, un ,
y un asignación-expresión, pero un expresión participación de operador coma no es en sí mismo un asignación-expresión así puede' t aparece en una lista de expresiones excepto cuando es un componente de algo que es una expresión de asignación .
Por ejemplo, puede rodear cualquier expresión (incluyendo uno usando el operador de coma) dentro de paréntesis, a partir de una primaria-expresión que es un asignación-expresión y por lo tanto válido en un expresión-lista .
E.g.
postfix-expresión donde el expresión-lista se compone de dos asignación-expresión cada uno de los cuales es un identificador.
f(a, b);
postfix-expresión donde el expresión-lista consta de un solo asignación-expresión que es un primaria-expresión que es un paréntesis expresión usando el operador de coma.
f((a, b));
¿Cuáles son los "constructos similares"? – Philipp
@Philipp: Básicamente, esos constructos en los que la gramática describe explícitamente el significado de la coma. La lista anterior omite, por ejemplo, las declaraciones de miembros y amigos, que son muy similares a las declaraciones de variables. Otro ejemplo sería una expresión de objeto temporal como 'Complex (0,1)' que es similar a una llamada a función. – MSalters
+1 para una respuesta súper concisa. – stinky472