#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
Комментариев нет:
Отправить комментарий