javascript - 請問三元運算式3<8?(9<6?7:5):2>0?4:1在java和php中的值不一樣,求解為何?
三叔
三叔 2017-06-08 11:02:07
0
6
1073


在java和js中的求值結果都為5,而PHP中卻為4
是不是因為我這個式子寫的不太規範?還是其他原因,求解
又讓別人用.net和c語言試了試都是5
【已解決】謝謝各位解答,我猜測的就是式子寫的不太規範,因為我一直覺得三元是從右往左的,所以最後的括號我省略了(以前也常這樣寫),會改正,為了規範,應該是3<8?(9<6?7:5):(2>0 ?4:1)

三叔
三叔

全部回覆(6)
typecho

三元運算子結合方向的問題:
java 從右向左。等效於30?4:1)
php 從做向右。等效於(30?4:1

因此為了避免歧義程式碼的產生,該寫的括號還是不要省略的好

过去多啦不再A梦

PHP的三元運算結合順序是反的
http://www.jianshu.com/p/124f...

代言

我猜是php對優先權的解讀跟java、js等語言不一樣,它可能解讀成了 (3 0) ? 4 : 1

某草草

在PHP是這樣的:

$a = (3 < 8 ? (9 < 6 ? 7 : 5): 2 > 0)
    ? 4
    : 1;

所以是 4;

在JavaScript中是這樣的:

var a = (3 < 8)
    ? (9 < 6 ? 7 : 5)
    : (2 > 0 ? 4 : 1);

所以是 5。

所以如果不清楚運算子的優先級,就把括號都補全了。 ^_^

刘奇

樓上正解~~~~~~

学霸

這樣寫真的不該打嗎?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板