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/d
vs d !=0 & 1/d
- ilki sıfıra bölmeyi garanti etmezken ikincisi garanti etmez.
&
bir if
açı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.
bitand
MATLAB'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 if
veya while
dö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.