请帮助解释这个c程序的输出

时间:2017-06-27 06:43:49

标签: c

执行后我得到输出为12 6 11.请解释这是如何可能的

#include<stdio.h>
#define MAN(x,y) (x)>(y)?(x):(y)
int main()
{
    int i = 10,j = 5,k = 0;
    k = MAN(i++,++j);
    printf("%d %d %d", i, j, k);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

宏将扩展该行 k=MAN(i++,j++)k=(i++)>(j++)?(i++):(j++); k=(i++)>(j++)?(i++)(j++)将不会被评估。

所以 我将增加两次并导致12 j将增加一次6当k将被分配时i值为11 so its value as 11`。