Hasil penilaian dalam kedua-dua java dan js ialah 5, tetapi dalam PHP ia adalah 4
Adakah kerana formula saya tidak ditulis dengan cara yang standard? Atau adakah atas sebab lain? Saya meminta orang lain untuk mencubanya menggunakan bahasa .net dan c, kedua-duanya adalah 5
[Selesai] Terima kasih atas jawapan anda, saya rasa formula itu tidak ditulis dengan cara yang standard, kerana saya selalu fikirkan bahawa ternary adalah dari Dari kanan ke kiri, jadi saya meninggalkan kurungan terakhir (saya sering menulisnya dengan cara ini sebelum ini). Demi penyeragaman, ia sepatutnya 3<8?(9<6? 7:5):(2>0?4:1 )
Masalah dengan arah gabungan pengendali ternary:(3<8?(9<6?7:5):2)>0?4:1
java dari kanan ke kiri. Bersamaan dengan
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 dari buat ke kanan. Bersamaan denganOleh itu, untuk mengelakkan penjanaan kod samar-samar, adalah lebih baik untuk tidak meninggalkan tanda kurungan yang sepatutnya ditulis
Tertib gabungan operasi ternary PHP adalah terbalik
http://www.jianshu.com/p/124f...
Saya rasa tafsiran keutamaan php berbeza daripada java, js dan bahasa lain Ia boleh ditafsirkan sebagai
(3 < 8 ? (9 < 6 ? 7 : 5) : 2 > 0) ? 4 : 1
Dalam PHP ia kelihatan seperti ini:
Jadi 4;
Dalam JavaScript ia kelihatan seperti ini:
Jadi 5.
Jadi jika anda tidak tahu keutamaan pengendali, lengkapkan kurungan. ^_^
Jawapan betul kat atas~~~~~~
Tidakkah saya patut menaip foto ini?