Недавно я узнал об операторе ,
и о том, что он вводит точку последовательности .Я = 0, ++ i определен?
Я также узнал, что следующий код привел к неопределенному поведению:
i = ++i;
Поскольку i
был изменен дважды между двумя точками последовательности.
А как насчет следующих кодов?
i = 0, ++i;
i = (0, ++i);
Хотя я знаю правила, я не могу прийти к выводу. Так это определено поведение или нет?
редактировать: Подобно тому, как @paxdiablo упоминает, определено или не, это действительно плохая практика которой следует избегать. Этот вопрос задается исключительно для образовательных целей и лучшего понимания «правил».
Я не знаю, почему люди так задают вопросы. Неважно, не определено ли это, это дерьмовый код. Вы не должны его использовать, иначе или иначе. – paxdiablo
@paxdiablo: Вы действительно думаете, что я использую такое бесполезное заявление в реальном коде?! Это лучше понять правила. Больше ничего. – ereOn
@ereOn хорошо учиться правилам, это правда. Но через некоторое время опыт обычно приводит кодеров, чтобы избежать каких-либо конструкций, которые не являются четко определенными и широко используемыми на всех платформах. –