我无法理解以下代码的输出有人可以帮帮我吗?
#define PRODUCT(x) (x*x)
main()
{
int i=3,j,k;
j=PRODUCT(i++);
k=PRODUCT(++i);
printf("\n %d%d",j,k);
}
对于上面我得到的输出为:
9和49
我无法理解49会是什么以及我何时评论
k=PRODUCT(++i);
我输出为25。 不知道程序中发生了什么
答案 0 :(得分:1)
宏进行文本替换。 PRODUCT(i++)
扩展为(i++*i++)
。除了非常令人惊讶的是,现在有i
的两个修改,这也是未定义的行为,因为这两个修改没有排序。