Чему равно значение переменной i в выражении ++i + ++i?



Автор The Human задал вопрос в разделе Другие языки и технологии

int i = 5; i = ++i + ++i //чему равно i? и получил лучший ответ

Ответ от Александр Ильин[гуру]
В языках C и C++ подобное выражение вызывает неопределенное поведение, так как переменная меняется несколько раз между точками следования. Компилятор вправе менять порядок операций, поэтому результат зависит от его реализации и может быть от 12 до 14. К примеру, gcc часто дает 13, считая это как 6 плюс 7, но может выйти и 12. В других языках с четкими правилами вычислений ответы предсказуемы: в Java получится строго 13, в Turbo C компилятор выдаст 14, а в Паскале результат может быть 10. Использовать такие конструкции в реальном коде нельзя.

Ответ от FrenZy[активный]
i=6+7=13

Ответ от Ѐодион Казанин[гуру]
если ++i это i+1, то
i=(5+1)+(5+1)=12, т. к. значение i должно быть постоянно до момента вычисления всей формулы.

Ответ от Akkark[гуру]
Скомпилировал gcc, получилось 13

Ответ от Виктор Закалюжный[новичек]
смотря какой язык программирования.
Java - 13
Turbo C - 14
Pascal - 10

Ответ от ВикиВопрос[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: int i = 5; i = ++i + ++i //чему равно i?

0 : 0 = ? (Чему равно ноль делить на ноль?)
В обычной арифметике делить на ноль нельзя, это запрещено правилами математики. Однако выражение 0
подробнее...

чему равно -1 в степени -1?
Число 1 в первой степени равно 1. Это базовое математическое правило: любое число в первой степени
подробнее...

чему равно X^0(число в нуливой степени)
Любое число, отличное от нуля, в нулевой степени равно единице. То есть X в степени 0 равно 1 при
подробнее...

Чему равно число П?
Число Пи — это отношение длины окружности к её диаметру. Оно является иррациональным, поэтому его
подробнее...

чему равно: x^2=2
Уравнение x в квадрате равно 2 имеет два решения, так как при возведении в квадрат как
подробнее...
Core i5 на Википедии
Посмотрите статью на википедии про Core i5
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*