На многих языках (широкий список, от C до JavaScript):
- запятые
,
отдельные аргументы (напримерfunc(a, b, c)
), в то время как - точки с запятой
;
разделяют последовательные инструкции (напримерinstruction1; instruction2; instruction3
).
Так почему же это отображение в тех же языках для циклов for :
for ( init1, init2; condition; inc1, inc2 )
{
instruction1;
instruction2;
}
вместо (что кажется мне более естественным)
for ( init1; init2, condition, inc1; inc2 )
{
instruction1;
instruction2;
}
?
Конечно, for
это ( как правило) не функция, но аргументы (то есть init
, condition
, increment
) ведут себя скорее как аргументы функции , чем последовательность инструкций.
Это связано с историческими причинами / соглашением, или есть хорошее обоснование для обмена ,
и ;
в циклах?
;
не используем |
?» (или почему мы используем «иначе», а не «иначе»? )), что не относится к одному языку, но к большому количеству из них. Ответ, например, «это было сделано в C как сокращение для цикла while (а несколько операторов для inc были продуманы только позже), и люди не хотели менять его, чтобы избежать раздражения программистов», был бы совершенно нормальным.