Страницы

Поиск по вопросам

среда, 30 января 2019 г.

undefined behavior или нет?

В одном из тестов в один из проектов от Mail.ru group встретил следующий код на языке С:
int b = 11; int a = ++b / 2 / 2 * 3 / 9 - b++ + 1;
Есть ли в этом выражении UB?
Если я правильно понимаю, то между двумя точками следования будет (++b / 2 / 2 * 3 / 9 - b++ + 1), где переменная b изменяется дважды. А такой случай не предусмотрен стандартом и результат зависит от реализации.


Ответ

Undefined.
В подтверждение этого утверждения могу привести диагностику:
warning: operation on ‘b’ may be undefined [-Wsequence-point]
от gcc (и g++) -Wall

Комментариев нет:

Отправить комментарий