Apa perbedaan antara operator logika &
dan &&
di MATLAB?
Jawaban:
Satu ampersand & adalah operator AND yang logis. Tanda ampersand ganda && sekali lagi merupakan operator logika AND yang menggunakan perilaku hubungan arus pendek. Korsleting berarti operan kedua (sisi kanan) dievaluasi hanya jika hasilnya tidak sepenuhnya ditentukan oleh operan pertama (sisi kiri)
A & B (A dan B dievaluasi)
A && B (B hanya dievaluasi jika A benar)
d != 0 && 1/d
vs d !=0 & 1/d
- jaminan pertama tidak ada pembagian dengan nol, yang kedua tidak.
&
melakukan hubungan pendek jika dalam sebuah if
pernyataan. Dan &&
mengambil input skalar. @ Jawaban Loren di bawah ini benar.
&&
dan selalu ||
ambil masukan skalar dan korsleting. |
dan &
mengambil input array dan hubung singkat hanya di pernyataan if / while. Untuk tugas, yang terakhir tidak melakukan hubungan arus pendek.
Lihat halaman dokumen ini untuk informasi lebih lanjut.
&
dan |
pernyataan if / while? Tampaknya tidak demikian halnya di R2012b dan R2014a.
Seperti yang telah disebutkan oleh orang lain, &
adalah operator AND yang logis dan &&
merupakan operator AND hubung singkat . Mereka berbeda dalam bagaimana operan dievaluasi serta apakah beroperasi pada array atau skalar:
&
(Operator AND) dan |
(operator OR) dapat beroperasi pada array dengan cara yang bijaksana.&&
dan ||
merupakan versi hubung singkat yang operan kedua dievaluasi hanya jika hasilnya tidak sepenuhnya ditentukan oleh operan pertama. Ini hanya dapat beroperasi pada skalar , bukan array.Mirip dengan bahasa lain, &
adalah operator bitwise logis, sedangkan &&
operasi logis.
Misalnya (maafkan sintaks saya).
Jika..
A = [True True False True]
B = False
A & B = [False False False False]
..atau..
B = True
A & B = [True True False True]
Sebab &&
, operan kanan hanya dihitung jika operan kiri benar, dan hasilnya adalah nilai boolean tunggal.
x = (b ~= 0) && (a/b > 18.5)
Harapan itu jelas.
bitand
adalah logika AND operator bitwise di MATLAB.
&& dan || adalah operator sirkuit pendek yang beroperasi dengan skalar. & dan | beroperasi pada array, dan gunakan hubungan arus pendek hanya dalam konteks if
atau while
ekspresi loop.
Aturan praktis yang baik saat menyusun argumen untuk digunakan dalam pernyataan bersyarat (IF, WHILE, dll.) Adalah selalu menggunakan && / || formulir, kecuali ada alasan yang sangat bagus untuk tidak melakukannya. Ada dua alasan ...
Melakukan ini, daripada mengandalkan resolusi vektor MATLAB di & dan |, mengarah ke kode yang sedikit lebih bertele-tele, tetapi BANYAK lebih aman dan lebih mudah untuk dipelihara.
r((r<2)&(r<2))
".
&
dapat beroperasi pada array tetapi&&
hanya dapat beroperasi pada skalar.