Kedua operator ini sering digunakan, dan mereka selalu bingung dan direkam. . .
a () && b (): Jika benar dikembalikan setelah mengeksekusi a (), maka b () dieksekusi dan nilai B dikembalikan; Jika false dikembalikan setelah menjalankan a (), seluruh ekspresi mengembalikan nilai a (), dan b () tidak dieksekusi;
a () || B (): Jika benar dikembalikan setelah mengeksekusi a (), seluruh ekspresi mengembalikan nilai a (), dan b () tidak dieksekusi; Jika false dikembalikan setelah menjalankan A (), b () dieksekusi dan nilai b () dikembalikan;
&& prioritas lebih tinggi dari ||
Kodenya adalah sebagai berikut
peringatan ((1 && 3 || 0) && 4); // Hasil 4 ①
peringatan (1 && 3 || 0 && 4); // Hasil 3 ②
peringatan (0 && 3 || 1 && 4); // Hasil 4 ③
menganalisa
Pernyataan ①: 1 && 3 Return 3 => 3 || 0 return 3 => 3 && 4 return 4
Pernyataan ②: Pertama jalankan 1 && 3 dan kembalikan 3, lalu jalankan 0 && 4 dan return 0, dan akhirnya jalankan hasil perbandingan 3 || 0 dan return 3
Pernyataan ③: Pertama jalankan 0 && 3 dan kembalikan 0, lalu jalankan 1 && 4 dan kembalikan 4, dan akhirnya jalankan perbandingan hasil 0 || 4 dan kembalikan 4
Catatan: Bilangan bulat yang bukan nol benar, tidak terdefinisi, string nol dan kosong adalah salah.