среда, 10 января 2018 г.

a = --a + a++


Старая тема, но сегодня опять всплыа. Решил тут опубликовать.

Вот выжимка из моего поста в FB.

Сегодня перебаламутил все знакомое программистское сообщество - никто не смог ответить правильно. :)
Попробуйте ответить без компиляции. Какой будет результат выполнения данной программы? ;)


В C/C++ это вообще не регламентировано, и зависит от реализации компилятора. В C# - это более регламентировано и более предсказуемо.

в C# и PoSh -2, а в C++ и Perl в зависимости от компилятора. В основном будет -1.

Хотел уже было бросить эту тему, но тут коллега заново ее реанимировал. Решили разобраться в деталях, почему именно так, а не иначе. Следующие две картинки наглядно демонстрируют работу обоих компиляторов. 

C++


C#



Очень хорошо видна разница между C++ и C#. В этом плане C++ более оптимальный. И сразу наглядно видно, почему C++ быстрее работает. Он тупо производит меньше операций.

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

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