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

时间:2014-05-30 17:42:31

标签: c++ postfix-operator prefix-operator

我正面临着一个关于后缀和前缀运算符的经典考试问题,前缀让我无法理解。请考虑以下事项:

#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”

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

1 个答案:

答案 0 :(得分:6)

makro扩展到

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

你的双倍增量。