Меня немного смущает документация MSDN C #, в которой говорится, что &
и |
являются логическими операторами, &&
а ||
также условными операторами.
Я продолжаю звонить &&
, ||
и !
логические операторы, так что я не прав?
c#
operators
logical-operator
Джон V
источник
источник
|
взаимозаменяемы||
, даже если во многих случаях они могут быть взаимозаменяемы без видимых изменений в поведении программы.Ответы:
Нет; ты прав.
В документации MSDN есть множество мелких, в основном незначительных ошибок номенклатуры; Я пытался вытащить как можно больше из них, но в тех случаях, когда это не является вопиюще неправильным и вводящим в заблуждение, это не всегда разумное использование времени. Перейдите к спецификации, если вы хотите определенное утверждение о названии функции C #.
Итак: соответствующим полномочием является спецификация C #, которая гласит в разделе 7.11:
Затем происходит дальнейшее разбиение встроенных логических операторов на целочисленные, перечислимые, логические и логические операторы с нулевым логическим значением. Есть также определенные пользователем логические операторы; смотрите спецификацию для деталей.
В разделе 7.12 мы имеем
Так что все они являются логическими операторами. Некоторые из них являются условными логическими операторами .
Что делает условные логические операторы условными ? Можно предположить, что это потому, что они обычно используются в условных выражениях (
if
) или условных выражениях (? :
). Настоящая причина указана в спецификации:Таким образом, условные логические операторы названы потому, что правый операнд вычисляется условно в зависимости от значения левого операнда.
Мы можем увидеть это более наглядно, заметив, что условные логические операторы являются просто «синтаксическими сахарами» для условных выражений .
x && y
это просто более приятный способ написанияx ? y : false
иx || y
просто более приятный способ написанияx ? true : y
. Условные логические выражения на самом деле являются условными выражениями.Существует также пользовательская форма условного логического оператора, и она немного сложнее. Подробности смотрите в спецификации.
Дальнейшее чтение, если эта тема вас интересует:
источник
В C # это все логические операторы.
&&
и||
называются « условными логическими операторами», потому что они являются короткими замыканиями.Обратите внимание, что эта терминология отличается от языка к языку. В C и C ++
&&
и||
есть просто логические операторы. В Java&
и|
называются побитовые операторы , а C и C ++ классифицируют их как арифметические операторы .источник
Дело в том, что
&
и|
являются побитовыми операторами, то есть они применяются к битовым строковым значениям и дают их. И побитовый это очень используемый термин среди программистов.Например
0xff & 0x00 == 0x00
, пока0xff | 0x00 == 0xff
.И
&&
и||
применяются к условиям, и дают обычные значения условий; т.е.true
иfalse
.Например
true && false == false
, покаtrue || false == true
.Поэтому
&&
и||
можно было бы назвать условные операторы, хотя это не обычный термин среди программистов.Конечно, каждый программист на C, C ++, Java и C # знает все это. Но я думаю, что это неправильно понято, потому что «условный оператор» не является термином, часто используемым нами, программистами.
источник