我正面临着一个关于后缀和前缀运算符的经典考试问题,前缀让我无法理解。请考虑以下事项:
#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”
我理解帖子和前缀是如何工作的(或者至少我是这么认为的)但是我不知道变量如何增加两次。对此有何解释?
答案 0 :(得分:6)
makro扩展到
( ++x > y ) ? (++x) : (y)
你的双倍增量。