执行下面程序段的结果是:

执行下面程序段的结果是:,第1张

楼主,你要注意,prt(a,b) 是“宏”,不是函数。

因此,原始代码看起来很迷惑人的!

因为在编译前,是要进行宏替换的,因此,我们先看看宏替换之后的代码:

(为减少内容,只看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.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12454491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存