Другие языки программирования и технологии

почему так. почему?? х=5 у=(++х)+(++х) ответ у=14 как считать?

В начале считывается ++x два раза, получается x == 7, потом считывается сумма, в итоге 14
Алексей Авреднов
Алексей Авреднов
2 833
Лучший ответ
Ну не знаю, у меня например в JavaScript получается 13
x=5;
y=(++x)+(++x);
alert(y);

1. ++x #1 » x=6
2. сохранение x=6 куда-то для дальнейшего использования
3. ++x #2 » x=7
4. value(п. 2)+7 = 13
А если у тебя проблемы в каком-нибудь СИ - значит это особенности недокомпилятора и недоязыка. Если в Делфи или еще какой-нибудь бредятине, удивляться точно нечему. Я себе вообще слабо представляю, как эти компиляторы перегоняют в Ассемблер п. 2.
Arsen Manucharyan написал уже, в чем проблема, так что
+1 в пользу Ассемблера и интерпретируемых языков
сто раз уже обсасывалось - результат зависит от компилятора. Гуглите
Богдан Дроботя
Богдан Дроботя
13 017
если так
cout << (++x)+(++x)<< endl;
то программа сначала сложит, потом присвоит и произведет общее сложение ++х (6) ++х (7) 7+7=14
а если так
cout << (x++)+(x++)<< endl;
программа сделает общее сложение потом только инкриментирует х, т. е. х=5 х=5 5+5=10 х++ (6) х++ (7)
сделай вывод значения х после примера, в обоих случаях х будет равнятся 7, вопрос лишь в каком порядке будет выполянятся операция
Отрицательные числа знаешь? Вот и считай.. . )))
здесь дело в порядке выполнения операторов.... у ++ приоритет выше сначала выполняются ++ а потом сложение:
у=(++х) +(++х)
6 потом 7 дальше складываем (возвращаемся обратно) с (++6) то есть с 7 = 14