Operador coma: ,Comma Operator: ,

Permite agrupar dos instrucciones donde se espera una.Allows grouping two statements where one is expected.

SintaxisSyntax

expression , expression

ObservacionesRemarks

El operador de comas tiene asociatividad de izquierda a derecha.The comma operator has left-to-right associativity. Dos expresiones separadas por una coma se evalúan de izquierda a derecha.Two expressions separated by a comma are evaluated left to right. El operando izquierdo se evalúa siempre, y todos los efectos secundarios se completan antes de que se evalúe el operando derecho.The left operand is always evaluated, and all side effects are completed before the right operand is evaluated.

Las comas se pueden utilizar como separadores en algunos contextos, como las listas de argumentos de función.Commas can be used as separators in some contexts, such as function argument lists. No confunda el uso de la coma como separador y como operador; los dos usos son completamente diferentes.Do not confuse the use of the comma as a separator with its use as an operator; the two uses are completely different.

Considere la expresión e1, e2.Consider the expression e1, e2. El tipo y el valor de la expresión son el tipo y el valor de E2; se descarta el resultado de la evaluación de E1 .The type and value of the expression are the type and value of e2; the result of evaluating e1 is discarded. El resultado es un valor L si el operando derecho es un valor L.The result is an l-value if the right operand is an l-value.

En los contextos en los que normalmente se utiliza la coma como separador (por ejemplo, en argumentos reales para funciones o inicializadores de agregado), el operador de la coma y sus operandos deben incluirse entre paréntesis.Where the comma is normally used as a separator (for example in actual arguments to functions or aggregate initializers), the comma operator and its operands must be enclosed in parentheses. Por ejemplo:For example:

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

En la llamada de función a func_one de la parte superior, se pasan tres argumentos separados por comas: x, y + 2 y z.In the function call to func_one above, three arguments, separated by commas, are passed: x, y + 2, and z. En la llamada de función a func_two, los paréntesis hacen que el compilador interprete la primera coma como el operador de evaluación secuencial.In the function call to func_two, parentheses force the compiler to interpret the first comma as the sequential-evaluation operator. Esta llamada a función pasa dos argumentos a func_two.This function call passes two arguments to func_two. El primer argumento es el resultado de la operación de evaluación secuencial (x--, y + 2), que tiene el valor y tipo de la expresión y + 2; el segundo argumento es z.The first argument is the result of the sequential-evaluation operation (x--, y + 2), which has the value and type of the expression y + 2; the second argument is z.

EjemploExample

// cpp_comma_operator.cpp
#include <stdio.h>
int main () {
   int i = 10, b = 20, c= 30;
   i = b, c;
   printf("%i\n", i);

   i = (b, c);
   printf("%i\n", i);
}
20
30

Consulte tambiénSee also

Expresiones con operadores binariosExpressions with Binary Operators
Operadores integrados de C++, precedencia y asociatividadC++ Built-in Operators, Precedence and Associativity
Operador de evaluación secuencialSequential-Evaluation Operator