сразу видно что писал человек далекий от программирования и\или здравого смысла
первое - 2, причем если повезет с языком то может и ексепшен кинуть
второе - зависит от языка, может и без изменений а может и +1
третье - зависит от языка, может и ексепшен кинуть если нет поддержки предварительного инкремента
Прежде, чем написать первый комментарий, я написал кусок кода для проверки на телефоне в C4droid (компилятор G++). Принял i равной 5 (ну не хочу нули ставить) и получил в результате 6, 6, 6. После вашего комментария повторил опыт и получил те же шестёрки в результате. За одно подредактировал и закинул в C# Shell (C# Offline Compiler) так же на телефоне. Результат - 6, 6, 6.
Ладно, может на Андроиде и на компьютерах разные стандарты? Сажусь за комп и вставляю этот кусок кода в Visual Studio (вариант C++). И тут консоль выдаёт в ответе 7, 5, 6. Ого, мнения разделились. По инерции вставляю этот кусочек кода в варианте C# (.NET Core 3.1) и в консоли 6, 6, 6.
Гхм... Лааадно, в QtCreator привязан MinGW, идем туда. Делаем чисто консольный проектик и в результате имеем 6, 6, 6. Но этот компилятор предупредил, что возможно неопределённое поведение. Хитрец, и нашим и вашим.
Мне стало интересно, что же дальше?
Java. IDE нет, но на компьютере установлена JVM. Вспоминаем компиляцию в командной строке (подсматриваем в гугле :-) ), пару танцев с бубном, и в результате имеем 6, 6, 6.
JavaScript. Онлайн-интерпретатор помогает нам вывести алертом 6, 6, 6.
PHP. Онлайн-интерпретатор PHP Sandbox выводит через echo - 6, 6, 6. Причем в старой версии 4.4.9. И в новой тоже.
Ни одного exception встречено не было. ( Вру, но то были мои косяки )))
Я человек, который не зарабатывает именно программированием, хотя мне интересна эта область знаний. Но данную простыню меня заставило написать сомнение в моём здравом смысле. Результатом прошу считать что существует мировой заговор против компании Microsoft, от которого она успешно отбивается своей оригинальной интерпретацией кода. Скорее всего есть статьи на эту тему, но мне было интересно сделать самому.
интересно)
домой попаду поклацаю
так на глаз уже вижу что у вас крашнет JS так так динамическая типизация у него вава, просто одной цифрой поверять бесполезно
с плюсами после переменной по идее должно дать было два, так как инкремент происходит ПОСЛЕ выполнения кода в блоке но это я тоже проверю
мне больше интересно это проверить на разных языках, питон, руби, шарп, gcc, c
вообще респект вам, что вы такое не поленились на телефоне проверить)
но на будущее если что есть онлайн-компиляторы
в разы удобнее и более релевантные данные,
Кстати, именно эта конструкция довольно удобна, за остальные - хз. Да и читается она вполне неплохо
Тут весь вопрос в том, что происходит: некая переменная инкрементируется на некую логическую единицу, или к ней прибавляется 1.
Если ++ стоит перед переменной, то операция выполняется в первую очередь, если после переменной – то в последнюю. Поэтому здесь сначала выполняется ++i, что увеличивает i на единицу. Затем происходит сложение i+i, и результат присваивается переменной a. После этого выполняется i++, и увеличивает i ещё на единицу.



IT-юмор
7.6K поста53.3K подписчика
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору