Member 13856095 Ответов: 2

#включать<студии.ч&ГТ; основной() { тип int х=10, м; напечатать("введите число"); сканирование ("более %D", &ампер;Х); У=Х++ + ++Х + Х ++ + ++Х + Х++; Print("результат:%Д", Г):;


Для ручного расчета получается 64 но в turbo C complier получается 70 а в Java 64 как это меняется может кто нибудь объяснить

Что я уже пробовал:

Если взять x=10, выполнив ручной расчет, то получится ответ 64, а в комплиере-70, как это возможно

2 Ответов

Рейтинг:
1

Patrice T

Вы находитесь в серой зоне: кодекс легален, но непредсказуем.

y=x++ + ++x + ++x + ++x + ++x;

Компилятор может свободно переупорядочивать то, что находится в этом коде.
для x=10 y может быть где угодно между 50 и 75.
Единственный совет: никогда не связывайтесь с несколькими операциями инкремента/декремента в одной строке кода.


Рейтинг:
0

OriginalGriff

Простой: Почему x = ++x + x++ дает мне неправильный ответ?[^]

Кстати: в будущем не ставьте свой код в качестве темы письма - именно для этого существует "то, что я пробовал". Тема письма должна быть короткой и приятной, а также как можно более кратким обзором проблемы на английском языке. Может быть, "x++ дает неправильный ответ" или что-то подобное?