Информация об изменениях

Сообщение Re[3]: Забавно от 07.05.2022 15:08

Изменено 07.05.2022 15:13 Андрей Тарасевич

Re[3]: Забавно
Здравствуйте, m11, Вы писали:


m11>>>Почему это компилится?

m11>>>без ошибок.

AD>>А в каком месте должна быть ошибка?


m11>value; это разве оператор? Еще с древних паскальских времен тут вроде должна быть ошибка типа "необходим оператор" а с++ оно вон какое.


А причем здесь "оператор"?

Упрощенно выражаясь, тело функции на языках С или С++ состоит из инструкций (statements). Statements бывают разных видов. Один из самых распространенных — expression statement, то есть выражение. `value;` — это вполне легальный expression statement.
Re[3]: Забавно
Здравствуйте, m11, Вы писали:


m11>>>Почему это компилится?

m11>>>без ошибок.

AD>>А в каком месте должна быть ошибка?


m11>value; это разве оператор? Еще с древних паскальских времен тут вроде должна быть ошибка типа "необходим оператор" а с++ оно вон какое.


А причем здесь "оператор"?

Упрощенно выражаясь, тело функции на языках С или С++ состоит из инструкций (statements). Statements бывают разных видов. Один из самых распространенных — expression statement, то есть выражение. `value;` — это вполне легальный expression statement.

Другое дело, что выражения мы обычно используем ради их результатов и/или побочных эффектов. Если у выражения и результат игнорируется, и побочных эффектов нет, то такое выражение бесполезно. Компилятор может выдать на эту тему предупреждение, если захочет. Но ошибки в этом нет.