Что такое init-statement и где оно используется?
Что такое init-statement? Недавно прочитал в интернете про if с инициализатором. По данным этого же сайта прочитал, что у цикла for так, же на первом месте в скобках стоит init-statement. Я понимаю, что это как обычное объявление, но почему-то для этого существует отдельный термин. Я очень бы хотел разобраться в терминологии и узнать где еще используется init-statement, заранее спасибо.
Ответы (1 шт):
Это не обязательно объявление. Например for (i = 42; /*...*/; /*...*/) разрешено, хотя i = 42 - это выражение, а не объявление.
init-statement - это термин грамматики, означающий выражение (после которого стоит ;) или объявление.
Убедимся в этом. Открываем грамматику и видим:
init-statement:
expression-statement
simple-declaration
Это значит, что init-statement - это или expression-statement, или simple-declaration.
expression-statement:
expressionopt ;
expression-statement - это выражение (expression), справа от которого стоит точка с запятой. opt (= "optional" = "опционально") значит, что выражения может и не быть, т.е. сама по себе ; - это тоже expression-statement.
simple-declaration - это обычное объявление 1 или нескольких переменных. Его описание в грамматике сложное, поэтому показывать не буду. Интересно, что определить структуру здесь тоже можно: for (struct A { /*...*/ }; /*...*/; /*...*/), ведь это считается объявлением (объявляющим 0 переменных)...