执行后我得到输出为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;
}
答案 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`。