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),3aquí, no 2,3. x = 2se evalúa al principio (y se completan sus efectos secundarios), luego se descarta el resultado, luego 3se evalúa (no hace nada de hecho). Por eso el valor de xes 2. Tenga en cuenta que 3es 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);, xse le asignará con 3).
Para return 2,3;la expresión coma es 2,3, 2se evalúa entonces su resultado se descarta, y luego 3se 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,3es la expresión aquí.
Sintaxis: attr(optional) return expression(optional) ; (1)