前缀在C++中递增变量两次

Nic*_*ick -5 c++ prefix-operator postfix-operator

我面临着一个关于postfix和前缀运算符的经典考试问题,前缀是我无法理解的.考虑以下:

#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;
}
Run Code Online (Sandbox Code Playgroud)

考试问题要求提供该课程的输出.对我来说,它将是"3大于2"但实际输出是"4大于2"

我理解post和前缀是如何工作的(或者至少我是这么认为的)但是我不知道变量如何递增两次.对此有何解释?

小智 6

makro扩展到

( ++x > y ) ? (++x) : (y)
Run Code Online (Sandbox Code Playgroud)

有你的双倍增量.