Según la precedencia del operador , el operador coma tiene una precedencia menor que operator=
, por lo que x = 2,3;
es equivalente a (x = 2),3;
. (La precedencia del operador determina cómo se vinculará el operador a sus argumentos, más estrictos o más flexibles que otros operadores según sus precedentes).
Tenga en cuenta que la expresión de coma está (x = 2),3
aquí, no 2,3
. x = 2
se evalúa al principio (y se completan sus efectos secundarios), luego se descarta el resultado, luego 3
se evalúa (no hace nada de hecho). Por eso el valor de x
es 2
. Tenga en cuenta que 3
es el resultado de toda la expresión de coma (es decir x = 2,3
), no se utilizará para asignar x
. (Cámbielo a x = (2,3);
, x
se le asignará con 3
).
Para return 2,3;
la expresión coma es 2,3
, 2
se evalúa entonces su resultado se descarta, y luego 3
se evalúa y se devuelve como el resultado de toda la expresión de coma, que es devuelto por la instrucción de retorno más tarde.
Información adicional sobre Expresiones y declaraciones
Una expresión es una secuencia de operadores y sus operandos, que especifica un cálculo.
x = 2,3;
es una declaración de expresión ,x = 2,3
es la expresión aquí.
Una expresión seguida de un punto y coma es una declaración.
Sintaxis: attr(optional) expression(optional) ; (1)
return 2,3;
es la declaración de salto ( declaración de retorno ), 2,3
es la expresión aquí.
Sintaxis: attr(optional) return expression(optional) ; (1)