Jestem nieco zdezorientowany dokumentacji MSDN C #, który stanowi, że &
i |
są operatory logiczne i że &&
i ||
są operatory warunkowe.
Ciągle dzwoni &&
, ||
a !
operatory logiczne, więc nie mam racji?
c#
operators
logical-operator
John V.
źródło
źródło
|
jest wymienna||
, chociaż w wielu przypadkach można je zamieniać bez widocznej zmiany w zachowaniu programu.Odpowiedzi:
Nie; masz rację.
W dokumentacji MSDN występuje wiele małych, głównie nieistotnych błędów w nomenklaturze; Próbowałem wydobyć ich jak najwięcej, ale w przypadkach, w których nie jest to rażąco złe i wprowadzające w błąd, nie zawsze mądrze jest wykorzystać czas. Przejdź do specyfikacji, jeśli chcesz definitywne oświadczenie o nazwie funkcji C #.
Tak więc: właściwym organem jest specyfikacja C #, która stwierdza w sekcji 7.11:
Następnie przechodzi do dalszego podziału wbudowanych operatorów logicznych na liczby całkowite, wyliczenie, logiczne i nullable-logiczne operatory. Istnieją również operatory logiczne zdefiniowane przez użytkownika; szczegóły w specyfikacji
W sekcji 7.12 mamy
Wszystkie są więc operatorami logicznymi . Niektóre z nich to warunkowe operatory logiczne .
Co powoduje, że warunkowe operatory logiczne są warunkowe ? Można by podejrzewać, że dzieje się tak, ponieważ są one zwykle używane w instrukcjach warunkowych (
if
) lub wyrażeniach warunkowych (? :
). Prawdziwy powód podano w specyfikacji:W ten sposób nazywane są warunkowe operatory logiczne, ponieważ prawy operand jest oceniany warunkowo w zależności od wartości lewego operandu.
Widzimy to bardziej żywo, zauważając, że operatory logiczne warunkowe są po prostu „cukrami składniowymi” dla wyrażeń warunkowych .
x && y
jest po prostu przyjemniejszym sposobem pisaniax ? y : false
ix || y
jest po prostu przyjemniejszym sposobem pisaniax ? true : y
. Warunkowe wyrażenia logiczne są w rzeczywistości wyrażeniami warunkowymi.Istnieje również zdefiniowana przez użytkownika postać warunkowego operatora logicznego i jest to trochę trudne. Szczegółowe informacje można znaleźć w specyfikacji.
Dalsza lektura, jeśli ten temat Cię interesuje:
źródło
W języku C # są to wszystkie operatory logiczne.
&&
i||
nazywane są „ warunkowymi operatorami logicznymi”, ponieważ powodują zwarcie.Pamiętaj, że ta terminologia różni się w zależności od języka. W C i C ++
&&
, a||
to tylko Operatory logiczne. W Javie,&
i|
nazywane są bitowe operatora , natomiast C i C ++ klasyfikuje je jako operatory arytmetyczne .źródło
Chodzi o to, że
&
i|
są logicznie operatorów, co oznacza, że są stosowane do bitowe wydajność wartości ciągów. Bitowe jest bardzo popularnym terminem wśród programistów.Na przykład
0xff & 0x00 == 0x00
podczas0xff | 0x00 == 0xff
.I
&&
i||
są stosowane w warunkach i dają zwykle wartości warunkach; tj .true
ifalse
.Na przykład
true && false == false
podczastrue || false == true
.Dlatego
&&
i||
można nazwać warunkowe operatorów, mimo że nie jest to zwykły termin wśród programistów.Oczywiście każdy programista C, C ++, Java i C # wie o tym wszystkim. Ale chyba źle zrozumiano, ponieważ „operator warunkowy” nie jest terminem często używanym przez nas, programistów.
źródło