1.macros一直很困难。 2.Below是代码和输出是125和7 ....请详细说明工作
#define mul(x) (x++ * ++x * x++)
#include<iostream.h>
void main()
{
int a=4,j;
j=mul(a);
cout<<j<<endl;
cout<<a<<endl;
}
答案 0 :(得分:0)
您的程序会导致未定义的行为。 j
可以是任何东西。
在此处阅读更多内容:Undefined behavior and sequence points
答案 1 :(得分:-1)
我认为发生的事情就是这样。
a
设为4。mul
被调用,a
被传入。++x
)有前缀增量,因此x
(a
)增加1. a
现在为5。x
(a
)6然后是7。j
则等于125。编辑: 这解释了他正在经历的行为。我知道在每种情况下都不会发生这种情况。