[Из песочницы] Неопределенное поведение в C++

Достаточно сложной темой для программистов на С++ является undefined behavior. Даже опытные разработчики зачастую не могут четко сформулировать причины его возникновения. Статья призвана внести чуть больше ясности в этот вопрос. Статья является ПЕРЕВОДОМ нескольких статей и выдержек из Стандарта по данной теме.Что такое «точки следования»? Стандарте сказано: Точки следования (sequence points)– такие точки в процессе выполнения программы, в которых все побочные эффекты уже выполненного кода закончили свое действие, а побочные эффекты кода, подлежащего исполнению, еще не начали действовать. (§1.9/7)Побочные эффекты? А что такое «побочные эффекты»? Побочный эффект (side effect) (согласно Стандарту) — результат доступа к volatile объекту, изменения объекта, вызова функции из библиотеки I/O или же вызова функции, включающей в себя какие-то из этих действий. Побочный эффект является изменением состояния среды выполнения. Вычисление некоторого выражения дает на выходе какой-то результат. Если же в дополнение к результату вычисление выражения вызывает изменения в среде выполнения, то говорят, что данное выражение имеет побочные эффекты. Например: Читать дальше →

© Habrahabr.ru