Java と js では評価結果が 5 ですが、PHP では 4 です。
式が標準的な方法で書かれていないからでしょうか?それとも他の理由ですか? .net と C 言語を使用して他の人に試してもらいましたが、結果はすべて 5
[解決済み] 回答ありがとうございます。私の推測では、式があまり標準化されていないためです。いつも三進法は右から左のような気がするので、最後の括弧を省略してしまいました(以前よくそう書いていました)修正します。標準化のため、3<8?(9<6)とします。 ?7:5):(2>0 ?4:1)
typecho2017-06-08 11:04:07
三項演算子の結合方向の問題:
javaは右から左へ。 3<8?(9<6?7:5):(2>0?4:1)
3<8?(9<6?7:5):(2>0?4:1)
php 从做向右。等效于(3<8?(9<6?7:5):2)>0?4:1
php の do から右に相当します。 (3<8?(9<6?7:5):2)>0?4:1
と同等です
そのため、曖昧なコードの生成を避けるために、記載すべき括弧は省略しないほうが良いです
代言2017-06-08 11:04:07
phpの優先度の解釈がjavaやjsなどの言語とは違うのでしょう(3 < 8 ? (9 < 6 ? 7 : 5) : 2 > 0) ? 4 : 1
某草草2017-06-08 11:04:07
PHP では次のようになります:
リーリーそれでは 4;
JavaScript では次のようになります:
リーリーそれでは5です。
演算子の優先順位がわからない場合は、括弧内を埋めてください。 ^_^