постфиксный оператор — префикс увеличивает переменную дважды в переполнении стека

Я сталкиваюсь с несколько классическим экзаменационным вопросом о постфиксных и префиксных операторах, префиксе, который я не могу обернуть. Учтите следующее:

#define MAX( a, b ) ( a > b ) ? (a) : (b)

int main()
{
int x = 2, y = 2;

if( MAX( ++x, y ) == x )
{
printf( " %d is greater than %d ", x, y );
}

return 0;
}

Экзаменационный вопрос требует вывода программы. Для меня это было бы «3 больше, чем 2», но фактический результат «4 больше 2»

Я понимаю, как работают post и prefix (или, по крайней мере, я так думал), но я не понимаю, как переменная увеличивается в два раза. Любое объяснение этому?

-5

Решение

Макро расширяется до

( ++x > y ) ? (++x) : (y)

Есть ваш двойной прирост.

6

Другие решения


По вопросам рекламы [email protected]