• Авторизация


Задачка для программистов 11-05-2007 16:05 к комментариям - к полной версии - понравилось!


int i = 5;
i = ++i + ++i;
чему равно i?
вверх^ к полной версии понравилось! в evernote
Комментарии (8):
kisundrik 14-05-2007-10:02 удалить
на самом деле 14. так на башорге написано :) но непонятна логика. если ++i увеличивает значение на 1, то:
i=6+7
однако i слева принимает сумму окончательных значений. это что же, значит получается:
i=7+7?
Laname 14-05-2007-10:47 удалить
что-то бред какой-то выходит.Должно быть 12 или 13....14 каким боком?
Cleg 14-05-2007-11:05 удалить
гы!
для не С++ - логика правильная. но С и С++ считают переменную просто ячейкой памяти. поэтому он инкрементит два раза одну и ту же переменную. поэтому i в итоге получается i = 7 после двух двух инкрементов.
в сумме дает 14.
это потому что С вычисляет значение при исползовании.
ява же например сначала вычисялет потом подставляет в выражение. и получает 6+7.
а в пайтоне нет оператори инкремента. поэтому у него ++ просто двойной унарный +
и у него это выражение будет равно 10 :-)
kisundrik 14-05-2007-11:49 удалить
была еще задачка. легкая. как поменять значения двух переменных друг на друга не используя третью переменную.
Cleg 14-05-2007-12:10 удалить
evadeep, ну через сложения или xor-ы я помню.
хотя метод не универсальный.
в некоторых языках типа пайтона того же это вообще легко:
(b, a) = (a, b)
:-)
вот была более интересная задача на паскале:
обменять значениями 2 переменных типа Set, не используя 3.


Комментарии (8): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Задачка для программистов | Cleg - Дневник маргинала Cleg'a | Лента друзей Cleg / Полная версия Добавить в друзья Страницы: раньше»