曹华淳
幼苗
共回答了12个问题采纳率:100% 举报
楼主,你要注意,prt(a,b) 是“宏”,不是函数.
因此,原始代码看起来很迷惑人的!因为在编译前,是要进行宏替换的,因此,我们先看看宏替换之后的代码:(为减少内容,只看if语句那儿)
//完成宏替换后的代码:
if(x>y) if(!x) y=x;
else if(!y) x=y;
//这样仍然有点“迷惑人”
//那再给它加上花括号,流程就清晰了:
if(x>y) {
if(!x) y=x;
else {if(!y) x=y;}
}
//看上面的代码,运行结果很明晰了吧! 因最初x=1 ,而y=0因此,第一个if(x>y)为真, 然后if(!x) 为假,执行了 else语句块. 在else的语句块中,if(!y) 为真,就执行了x = y最终结果,就是x和y的值都为 0 了.
1年前
6