因此,原始代码看起来很迷惑人的!
因为在编译前,是要进行宏替换的,因此,我们先看看宏替换之后的代码:
(为减少内容,只看if语句那儿)
//完成宏替换后的代码:if(x>y) if(!x) y=xelse 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 了。
c=20.首先要明白条件运算符?:的优先级高于赋值运算符,所以c= a != b ? a+b : a-b也就等于
c= (a != b ? a+b : a-b)
首先,a!=b成立笑迅乱,所以条件运算式的结果是a+b=20,
然后把条件运算式的昌改结果赋值给c,所碰档以c=20
x=
8
x
=
4
Press
any
key
to
continue
关键在于a++,a++是先运算在加1,侍宏所以或念,fun函数里,输出的结果老团册是5+3=8,
main函数是1+3=4如果换成++a,则结果是9和5.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)