Diferencia entre “int i = 1,2,3” y “int i = (1,2,3)” – statement de variable con operador de coma

  1. int i=1,2,3;

  2. int i=(1,2,3);

  3. int i; i=1,2,3;

¿Cuál es la diferencia entre estas declaraciones? No puedo llegar a ninguna razón particular para ello.

 Statement 1 Result : Compile error. 

El operador ‘=’ tiene mayor prioridad que el operador ‘,’. La coma actúa como separador aquí. el comstackdor crea una variable entera ‘i’ y la inicializa con ‘1’. El comstackdor no puede crear la variable entera ‘2’ ya que ‘2’ no es un indentificador válido.


 Statement 2 Result: i=3 

El operador ‘()’ tiene mayor prioridad que ‘=’. Entonces, en primer lugar, se evalúa el operador de paréntesis. El operador ‘()’ se opera de izquierda a derecha. pero siempre es el resultado del último que se asigna.


 Statement 3: Result: i=1 

El operador ‘=’ tiene mayor prioridad que el operador ‘,’. así que ‘i’ se inicializa por ‘1’. ‘2’ y ‘3’ son solo expresiones constantes. por lo que no tienen efecto.

Es el operador de coma

 i = a, b, c; // stores a into i ... a=5, b=2, c=3, i=5 i = (a, b, c); // stores c into i ... a=5, b=2, c=3, i=3 

El comportamiento diferente entre la primera y la segunda línea se debe a que el operador de coma tiene una prioridad más baja que la asignación.