Страницы

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

суббота, 4 января 2020 г.

undefined behavior или нет?

#c


В одном из тестов в один из проектов от Mail.ru group встретил следующий код на языке С:

int b = 11;
int a = ++b / 2 / 2 * 3 / 9 - b++ + 1;


Есть ли в этом выражении UB?

Если я правильно понимаю, то между двумя точками следования будет (++b / 2 / 2 *
3 / 9 - b++ + 1), где переменная b изменяется дважды. А такой случай не предусмотрен
стандартом и результат зависит от реализации.
    


Ответы

Ответ 1



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

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

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