Guru Han berkata:
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && --c && ++a)
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3
that If "--c" ditukar kepada "c--"", nilai c juga 0. Kenapa nilai tukar kepada 4?
Saya harap guru dapat menjawabnya, terima kasih!
--c dikira dahulu dan kemudian ditugaskan kepada c iaitu bunuh dahulu dan lapor kemudian Apabila anda membunuhnya, maharaja belum tahu dan fikir dia belum mati, jadi c masih yang asli. Hanya selepas melaporkan bahawa dia tahu bahawa dia Sudah mati, c dikurangkan satu pada masa ini.
Dan c-- ditugaskan kepada c selepas penolakan Pada masa itu, c adalah kurang satu, yang bermaksud maharaja secara peribadi mengawasi pelaksanaan.
Untuk --c
a < b benar
--c c pengurangan dahulu c=0 salah (0 adalah palsu, bukan-0 adalah benar)
a<b&&--c salah kemudian && akan dicetuskan "Short litar" tidak melaksanakan ++a
semua c=0, a=3
untuk c--
a < b true
c-- c mula-mula menentukan benar dan salah dan kemudian mengecil sendiri, c=1 kerana semua penghakiman adalah benar Maka c pengurangan
a<b&&--c Benar tidak akan mencetuskan "litar pintas" && Laksanakan dan hakim ++a
Jadi c=0, a=4
--Apabila c++, sebelah kiri ungkapan adalah palsu, dan ++a di sebelah kanan tidak melakukan operasi, jadi nilai a masih 3
Apabila c++, sebelah kiri ungkapan adalah benar, jadi ++a di sebelah kanan masih perlu melakukan operasi, jadi nilai a Nilai menjadi 4
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
if ( a < b && c-- && ++a);/ /Pada masa ini, nilai c juga adalah 0, yang juga sepatutnya palsu ++a tidak boleh dikira, jadi nilai a masih harus 3. Mengapa ia dikira?
{
window.alert("OK")
}
window.alert(c) // c = 0
window.alert(a) // a =3