javascript - Nilai ungkapan aritmetik ternary 3<8?(9<6?7:5):2>0?4:1 adalah berbeza dalam Java dan PHP.
三叔
三叔 2017-06-08 11:02:07
0
6
1026


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 )

三叔
三叔

membalas semua(6)
typecho

Masalah dengan arah gabungan pengendali ternary:
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:1php dari buat ke kanan. Bersamaan dengan (3<8?(9<6?7:5):2)>0?4:1

Oleh itu, untuk mengelakkan penjanaan kod samar-samar, adalah lebih baik untuk tidak meninggalkan tanda kurungan yang sepatutnya ditulis

过去多啦不再A梦

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:

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

Jadi 4;

Dalam JavaScript ia kelihatan seperti ini:

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

Jadi 5.

Jadi jika anda tidak tahu keutamaan pengendali, lengkapkan kurungan. ^_^

刘奇

Jawapan betul kat atas~~~~~~

学霸

Tidakkah saya patut menaip foto ini?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan