Odpowiedzi:
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?
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:
Operatory
&,^i|nazywane są operatorami logicznymi.
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
Te
&&i||operatorzy są nazywane warunkowe operatorów logicznych. Są one również nazywane operatorami logicznymi „zwierającymi”.
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:
&&I||operatorzy są wersje warunkowego&i|operatorzy: Operacjax && yodpowiada operacjix & y, oprócz tego, żeyjest oceniana tylko wtedy, gdyxnie jest fałszywy. Operacjax || yodpowiada operacjix | y, z tym żeyjest oceniana tylko wtedy, gdyxnie jest prawdziwa.
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 && yjest po prostu przyjemniejszym sposobem pisania x ? y : falsei x || yjest po prostu przyjemniejszym sposobem pisania x ? 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:
W języku C # są to wszystkie operatory logiczne.
int x = 0xABCD & 0xFF // x == 0xCD
&&i ||nazywane są „ warunkowymi operatorami logicznymi”, ponieważ powodują zwarcie.
bool someOtherCondition = true;
if (x == 0xEF && someOtherCondition) // someOtherCondition is not evaluated,
// because x == 0xEF is false
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 .
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 == 0x00podczas 0xff | 0x00 == 0xff.
I &&i ||są stosowane w warunkach i dają zwykle wartości warunkach; tj . truei false.
Na przykład true && false == falsepodczas true || 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.
|jest wymienna||, chociaż w wielu przypadkach można je zamieniać bez widocznej zmiany w zachowaniu programu.