问题:
c语言中条件表达式的运算顺序不应该是自左向右吗?为什么a<b?a:c<d?c:d 的结果为1.
解答:
C语言的条件表达式就是右结合性,不是左结合,左结合的是数学!这个规则是创造C的人规定的,无法改变!
用数学规则来理解就是a<b?a:(c<d?c:d)
关系运算<的优先级比? :运算的优先级高
!!! 在Java中是一样的,结果为: 1。
问题:
c语言中条件表达式的运算顺序不应该是自左向右吗?为什么a<b?a:c<d?c:d 的结果为1.
解答:
C语言的条件表达式就是右结合性,不是左结合,左结合的是数学!这个规则是创造C的人规定的,无法改变!
用数学规则来理解就是a<b?a:(c<d?c:d)
关系运算<的优先级比? :运算的优先级高
!!! 在Java中是一样的,结果为: 1。