Arasındaki fark nedir &ve &&MATLAB'da mantıksal operatörler?
Yanıtlar:
Tek ve işareti &, mantıksal AND operatörüdür. Çift ampersand &&, yine kısa devre davranışı kullanan mantıksal bir AND işlecidir. Kısa devre, yalnızca ikinci işlenenin (sağ taraf), yalnızca sonuç ilk işlenen tarafından tam olarak belirlenmediğinde (sol taraf) değerlendirildiği anlamına gelir.
A & B (A ve B değerlendirilir)
A && B (B yalnızca A doğruysa değerlendirilir)
d != 0 && 1/dvs d !=0 & 1/d- ilki sıfıra bölmeyi garanti etmezken ikincisi garanti etmez.
&bir ifaçıklamada ise kısa devre yapar . Ve &&skaler girdiler alır. @ Loren'in aşağıdaki cevabı doğrudur.
&&ve her ||zaman skaler girişler ve kısa devre alın. |ve &dizi girişlerini ve kısa devreyi yalnızca if / while ifadelerinde alın. Atama için ikincisi kısa devre yapmaz.
Daha fazla bilgi için bu belge sayfalarına bakın .
&ve |if / while ifadeleri hakkında herhangi bir bilginiz var mı? R2012b ve R2014a'da durum böyle görünmüyor.
Zaten başkaları tarafından belirtildiği gibi, &a, mantıksal ve operatör ve &&a, kısa devre ve operatör . İşlenenlerin nasıl değerlendirildiği ve diziler veya skalarlar üzerinde çalışıp çalışmadıklarına göre farklılık gösterirler :
&(VE operatörü) ve |(OR operatörü), diziler üzerinde eleman bazında çalışabilir .&&ve ||ikinci işlenenin yalnızca sonuç birinci işlenen tarafından tam olarak belirlenmediğinde değerlendirildiği kısa devre versiyonlarıdır. Bunlar dizilerde değil , yalnızca skalerlerde çalışabilir .&mantıksal elementsel bir operatördür, &&mantıksal kısa devre operatörü ise (sadece skalerlerde çalışabilir)
Örneğin (sözdizimimi bağışlayın).
Eğer..
A = [True True False True]
B = False
A & B = [False False False False]
..veya..
B = True
A & B = [True True False True]
Çünkü &&, sağ işlenen yalnızca sol işlenen doğruysa ve sonuç tek bir boole değeriyse hesaplanır.
x = (b ~= 0) && (a/b > 18.5)
Umarım bu açıktır.
bitandMATLAB'daki bitsel mantıksal AND operatörüdür.
&& ve || olan kısa devre skalerler faaliyet operatörler. & ve | diziler üzerinde çalışır ve kısa devreyi yalnızca ifveya whiledöngü ifadeleri bağlamında kullanır .
Koşullu ifadelerde (IF, WHILE, vb.) Kullanmak için argümanlar oluştururken iyi bir temel kural, her zaman && / || yapmamak için çok iyi bir neden yoksa formlar. Bunun iki sebebi var ...
Bunu yapmak, MATLAB'ın & ve | içindeki vektörlerin çözünürlüğüne güvenmek yerine, biraz daha ayrıntılı, ancak LOT daha güvenli ve bakımı daha kolay olan koda yol açar.
r((r<2)&(r<2))" gibi süslü indeksleme yaparken .
&diziler üzerinde çalışabilir ancak&&yalnızca skalerlerde çalışabilir.