日期:2014-05-20  浏览次数:20640 次

多個? : 的嵌套問題
return count > r.count ? 1 :
count < r.count ? -1 : 0;
這段代碼中用了多個 ? : 嵌套 我搞不清楚他們之間的關係

最好用括號括起來分清楚哪部分是嵌套在哪一部分的
javase?語法

------解决方案--------------------
 (count > r.count) ? 1 :(( count< r.count)  ? -1 : 0)

当红色括号内为真时结果是1,为假时,取最后括号中的值,而这个值又是根据绿色括号内的真假判断的,为真是-1,为假是0,

判断的结果是,count>r.count 取1; count<r.count取-1,count=r.count取0
------解决方案--------------------
你问的这个其实是个三目运算,简单来说就是个公式,结构如下:

表达式1 > 表达式2 ?值1 :值2

其实很好理解,其实就是你给计算机出了个问答题,计算机算出

表达式1 > 表达式2 是真,那它就取 值1,否则就取值2,当然值1和值2

又可以是一个公式,就想你这里的用法,这叫嵌套,当有嵌套的时候,

你这里的执行顺序是:自右向左执行,也就是:

先 : count < r.count ? -1 : 0   这样会得到一个结果,假设得到的是 0
后 : count > r.count ? 1 : 0

其实说白了就是: 如果 count > r.count 结果就是 1, 如果count = r.count 结果就是 0
如果count < r.count 结果就是 -1