Por que esse uso de vírgula funciona em uma expressão, mas falha em uma declaração?
Sou de linguagens OOP de alto nível, C # e Java, e recentemente comecei a coçar a cabeça em C. Sinto-me um pouco estranho em C, da mesma forma que um JS é. Então, quero esclarecer abaixo:
Abaixo, aparece um erro e isso parece intuitivo, pois parece com sintaxe incorreta, mesmo em idiomas OOP
int i=0,1,2;
/*
Error : expected identifier or ‘(’ before numeric constant
int i = 0, 1, 2;
^
*/
No entanto, abaixo funciona surpreendentemente:
int i;
i = 0,1,2; //works
Por que esse comportamento? Existe algum significado para manter esse comportamento ou apenas alguns aspectos técnicos de análise?