¿Por qué este uso de coma funciona en una expresión pero falla en una declaración?
Soy de lenguajes OOP de alto nivel, C # y Java, y recientemente comencé a rascarme la cabeza en C. Me siento C un poco extraño tan igual como se siente JS. Entonces quiero aclarar a continuación:
A continuación se muestra un error y eso parece intuitivo, ya que parece una sintaxis incorrecta incluso en los lenguajes OOP
int i=0,1,2;
/*
Error : expected identifier or ‘(’ before numeric constant
int i = 0, 1, 2;
^
*/
Sin embargo, a continuación funciona sorprendentemente:
int i;
i = 0,1,2; //works
¿Por qué es este comportamiento? ¿Tiene algún significado mantener ese comportamiento o solo algunos tecnicismos de análisis?