Что второе означает единственного амперсанда в C#?

Вот шаги:

  • Установка subclipse плагин (обеспечивает svn возможность соединения в затмении), и подключение к репозиторию. Инструкции здесь: http://subclipse.tigris.org/install.html
  • Переходит к Файлу-> Новый-> Другой-> Под категорией SVN, выбирает Проекты Контроля из SVN.
  • Выбор корневая папка Вашего проекта и избранный контроль как проект в рабочей области.

кажется проверкой .project файла в исходном репозитории. Я предложил бы не регистрироваться в .project файле, таким образом, у пользователей может быть своя собственная версия файла. Кроме того, при использовании subclipse плагина, он позволяет Вам проверять и настраивать исходную папку как проект Java. Этот процесс создает корректный .project для Вас (с природой Java),

10
задан Makoto 18 October 2013 в 04:48
поделиться

6 ответов

Одиночный & - это «побитовый оператор И», как сказано в dove . Я смотрю на вторую часть вопроса: «Почему это работает?»

Думайте в двоичном формате:

 000 = 0
 001 = 1
 010 = 2
 011 = 3
 100 = 4
 101 = 5
 110 = 6
 111 = 7
 and so on

Обратите внимание, что все четные числа заканчиваются на 0;

33
ответ дан 3 December 2019 в 13:13
поделиться

Здесь :

Унарный & оператор возвращает адрес своего операнда (требуется небезопасный контекст).

Двоичный & операторы предопределены для целочисленных типов и bool. Для целочисленных типов & вычисляет логическое побитовое И своих операндов. Для операндов типа bool & вычисляет логическое И своих операндов; то есть результат будет истинным тогда и только тогда, когда оба его операнда истинны.

& operator оценивает оба оператора независимо от значения первого.

16
ответ дан 3 December 2019 в 13:13
поделиться

Для логических типов вы упомянули, как они себя ведут.

Для целочисленных типов это побитовый оператор «И».

Может быть перегружен для других типов.

6
ответ дан 3 December 2019 в 13:13
поделиться

Предыдущие ответы верны, но не касаются того, чем & отличается от && , который, как я думал, был вашим исходным вопросом, поэтому я возьму что.

Как было сказано, & - это побитовое И. && - это логическое И. & выполняет операцию И над своими операндами побитно, и в целом действует точно так же, как + или * или любой арифметический оператор. && более сложный. Он сравнивает каждый из своих операндов с нулем. Если первый операнд равен нулю, он принимает значение false и замыкает остальную часть выражения, то есть не оценивает оставшиеся операнды. Если первое значение не равно нулю, проверяется второе значение. Если это ноль, он принимает значение false , в противном случае принимает значение true . В любом случае он продолжает вычислять выражение.

То есть между & и && есть два важных различия:

  1. & работает побитно. в то время как && рассматривает только ноль и ненулевое значение и всегда возвращает либо 0, либо 1. Таким образом 5 и 6 (двоичные 101 и 110 ) дают 4 (двоичные 100 ), а 5 && 6 дает 1 ( истина ).

  2. && «короткие замыкания». Если первое значение равно нулю, второе значение не оценивается. & не имеет такого правила. Это важно по нескольким причинам:

    1. Если второе значение имеет побочные эффекты, то с & эти побочные эффекты всегда возникают, а с && - нет. Таким образом, x & (y ++) всегда будет увеличивать y , а x && (y ++) будет увеличивать только y , если x не равно нулю. Это становится более важным - и, возможно, более тонким - если второй операнд является вызовом функции.
    2. Первое значение может проверять что-то, определяющее, что второе значение недопустимо. Как x! = NULL && x-> foo == 3 . С и , когда x равно null , это может привести к сбоям сегмента или аналогичному.
    3. Наконец, может быть существенный выигрыш в производительности. Например, x! = 'A' && readTonsOfStuffFromDatabaseAndCalculateTotal (x) . С & чтение будет происходить независимо и, возможно, будет пустой тратой времени.

Вот почему мы почти всегда используем && для вещей, которые действительно являются логическими операциями, и ограничиваем использование и , когда нам действительно нужна побитовая операция. Но бывают случаи, когда вы НЕ хотите, чтобы произошло короткое замыкание, и в этом случае и могут быть хорошим выбором. Но если вы используете его для «логической» работы, будьте очень осторожны с операндами, которые могут иметь любые значения, кроме 0 или 1. 1 && 2 равно true , но ] 1 & 2 является ложным .

для вещей, которые на самом деле являются логическими операциями, и ограничивают использование и тем, когда мы действительно хотим побитовой операции. Но бывают случаи, когда вы НЕ хотите, чтобы произошло короткое замыкание, и в этом случае и могут быть хорошим выбором. Но если вы используете его для «логической» работы, будьте очень осторожны с операндами, которые могут иметь любые значения, кроме 0 или 1. 1 && 2 равно true , но ] 1 & 2 является ложным .

для вещей, которые на самом деле являются логическими операциями, и ограничивают использование и тем, когда мы действительно хотим побитовой операции. Но бывают случаи, когда вы НЕ хотите, чтобы произошло короткое замыкание, и в этом случае и могут быть хорошим выбором. Но если вы используете его для «логической» работы, будьте очень осторожны с операндами, которые могут иметь любые значения, кроме 0 или 1. 1 && 2 равно true , но ] 1 & 2 является ложным .

7
ответ дан 3 December 2019 в 13:13
поделиться

Амперсанд представляет собой побитовую операцию И. Поразрядный оператор возвращает результат сравнения между каждым соответствующим битом в двух операндах.

Например, если x равен 0110, а y равен 1010, то побитовое И для x и y (x & y) дает 0010.

4
ответ дан 3 December 2019 в 13:13
поделиться

Побитовый оператор И.

3
ответ дан 3 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: