Почему это использование запятой работает в выражении, но не в объявлении?
Я из ООП-языков высокого уровня C # и Java, и недавно начал чесать голову в C. Я чувствую C немного странно, как и JS. Поэтому хочу уточнить ниже:
Ниже приведена ошибка, и это кажется интуитивно понятным, поскольку выглядит как неправильный синтаксис даже в языках ООП
int i=0,1,2;
/*
Error : expected identifier or ‘(’ before numeric constant
int i = 0, 1, 2;
^
*/
Однако ниже работает удивительно:
int i;
i = 0,1,2; //works
Почему это поведение? Имеет ли какое-то значение сохранение такого поведения или просто некоторые технические особенности?