Я сталкиваюсь с несколько классическим экзаменационным вопросом о постфиксных и префиксных операторах, префиксе, который я не могу обернуть. Учтите следующее:
#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 (или, по крайней мере, я так думал), но я не понимаю, как переменная увеличивается в два раза. Любое объяснение этому?
Макро расширяется до
( ++x > y ) ? (++x) : (y)
Есть ваш двойной прирост.