c语言表达式问题···

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:31:04
5. 若有说明语句:“int x=1, y=0;”,则表达式x――>(y+x)?5:25>y++?‘1’:‘2’的值是 () 。
答案是5,为什么?
伊·梵 - 大魔法师 你可以详细点吗,我笨我看不大明白哦

答案不对吧

我认为答案是1

我来说明我的理由吧

这表达式是自右向左结合,这我当然知道

x――>(y+x)?5:25>y++?‘1’:‘2’等价与

x――>(y+x)?5:(25>y++?‘1’:‘2’)接下来x――>(y+x)?5:1
y++运算过后,y的值就变成1了

x――>(y+x)?5:1
先执行x--执行完后,x就变成0了,所以y+x=1

则1>1?5:1

所以答案是1啊~~!

我说的不对可以在线交流啊~~!共同提高啊~~!

应该是x--执行完了之后才跟y+x比较 1>0 所以答案为5

这个,是不是谭浩强书里的...?

?:是右结合的
x-->(y+x)?5:25>y++?'1':'2'
-->
((x--)>(y+x))?5:(25>y++?'1':'2')

问题集中到(x--)>(y+x)

TC测试结果(x--)>(y+x)结果为true

这题与 x++*x++ 问题属于同性质的问题

x――>(y+x)

这个是什么意思?是x-- > (y+x)吗?