kumarsonu98520 Ответов: 2

Пре-инкремент оператор в C Программирование


другой ответ в другом компиляторе

в turbo c++ выход равен 21, а в любом другом-19.

#include<stdio.h>
void main()
{
int i=4,x;
x= ++i + ++i + ++i;
printf("%d",x);
} 

фактический выход составляет 19 как это происходит пожалуйста объясните это

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

в turbo c++ выход равен 21, а в любом другом-19.

фактический выход составляет 19 как это происходит пожалуйста объясните это

0x01AA

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

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Поведение операторов pre - и post-fix в языке C не совсем точно определено. Реализация этих операторов варьируется от компилятора к компилятору.


Рейтинг:
1

Patrice T

Цитата:
фактический выход составляет 19 как это происходит пожалуйста объясните это

Просто, вы находитесь в серой зоне, компилятор C может свободно переписывать ваш код так, как он считает нужным.
Любая формула с несколькими инкрементами/декрементами для одной и той же переменной непредсказуема, результат также может изменяться в зависимости от версий одного и того же компилятора или может зависеть от параметров оптимизации.