0;
i += i += 1;
в результате i будет равен угадайте чему?
это реально кто-то так пишет?
это я попытался написать тест для компиля
ну чисто с теоретической точки зрения, тут i += (i += 1); далее раскрываем первую операцию i = i + (i += 1) подставляем левый операнд i = 0 + (I +=1) раскрываем правый операнд i = 0 + (i = i + 1) подставляем левый операнд во внутреннюю шнягу i = 0 + (i = 0 + 1) теперь i =1, а внутренняя шняга возвращает 1 остаётся i = 0 + 1 i снова 1
чисто теоретически эту хуйню можно развернуть как угодно, и если i ленивое во всех местах, то получишь ты не единичку а двойку
А чойто оно у тебя левоассоциативное, если в шарпике справа
вопрос хороший, но не уверен что речь про конкретный компилятор
Ну это же в спеке регламентируется, а компилятор может делать что хочет: воровать, убивать, ебать гусей - если о крестах/сижке говорить, но там это сделано же как оптимизация компиляции хуёмоё
у меня есть мнение что речь про цезиум вообще была и сишные компиляторы
тут не столько ассоциативность операций значение имеет, сколько то как определен +=, т.к. тут играет роль не "левая часть выражения" целиком, а lvalue слева от оператора
конкретно пример был вообще про рослин, и да, в рослине код дает единичку
UB 1 или 2, притом результат может зависеть от опций компилятора
Обсуждают сегодня