我是一个C语言的初学者,但我想我可以说一下我的理解.
我只用过TC2.0,所以不说编译器的问题,我只是根据老谭的思路.
首先我要说的是"右结合性"
看题目:x-->(y+x)?5:25>y++?'1':'2'
右结合后:x-->(y+x)?5:(25>y+=?'1':'2')
那么接下来先执行什么呢?应该是:x-->(y+x)
题目中x=1,y=0,那么这里就是1>(0+0)注意:这里的Y还没有自加
等式成立,答案就是5.
如果有人要问,为什么不执行第2个括号里面的?
那就像是IF语句如果等式成立还会去执行ELSE后面的语句吗,所以这里Y没有自加.
编译器是左结合的话,我想大家应该可以理解了.
我只用过TC2.0,所以不说编译器的问题,我只是根据老谭的思路.
首先我要说的是"右结合性"
看题目:x-->(y+x)?5:25>y++?'1':'2'
右结合后:x-->(y+x)?5:(25>y+=?'1':'2')
那么接下来先执行什么呢?应该是:x-->(y+x)
题目中x=1,y=0,那么这里就是1>(0+0)注意:这里的Y还没有自加
等式成立,答案就是5.
如果有人要问,为什么不执行第2个括号里面的?
那就像是IF语句如果等式成立还会去执行ELSE后面的语句吗,所以这里Y没有自加.
编译器是左结合的话,我想大家应该可以理解了.
佛,你万世孤独,请容我一生寂寞.