Что такое init-statement и где оно используется?

Что такое init-statement? Недавно прочитал в интернете про if с инициализатором. По данным этого же сайта прочитал, что у цикла for так, же на первом месте в скобках стоит init-statement. Я понимаю, что это как обычное объявление, но почему-то для этого существует отдельный термин. Я очень бы хотел разобраться в терминологии и узнать где еще используется init-statement, заранее спасибо.


Ответы (1 шт):

Автор решения: HolyBlackCat

Это не обязательно объявление. Например 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 переменных)...

→ Ссылка