Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269

Различия между & и &&

10.02.2017, 11:17. Показов 2839. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Застрял на теме логики,
в общем помогите разобраться в отличиях при решении задач между & и &&

Середину закоментил, смысл не в том что на 0 делить нельзя любое число если поставить вместо нуля, по Шилдту тут как раз разбирают разницу между этими элементами, но я не могу понять в чём именно? Если вверху поставим 0, тоже делиться не будет, а если 0 изменим на 1 или 5 то отработает нормально, просто в дальнейшем если буду использовать только && как это может пагубно сказаться?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
class SCops
{
    static void Main() {
int n, d;
n = 10;
d = 2;
if (d != 0 && (n % d) == 0)
Console.WriteLine(n + " делится нацело на " + d);
d = 0; // задать нулевое значение переменной d
// d равно нулю, поэтому второй операнд не вычисляется
//if (d != 0 && (n % d) == 0)
//Console.WriteLine(n + " делится нацело на " + d);
// Если теперь попытаться сделать то же самое без укороченного
// логического оператора, то возникнет ошибка из-за деления на нуль.
if (d != 0 & (n % d) == 0)
Console.WriteLine(n + " делится нацело на " + d);
}
}
Добавлено через 3 минуты
Почему тогда здесь просто И :
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
class IsOdd {
static void Main() {
ushort num;
num = 10;
if((num & 1) == 1)
Console.WriteLine("He выводится.");
num = 11;
if((num & 1) == 1)
Console.WriteLine(num + " — нечетное число.");
}
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2017, 11:17
Ответы с готовыми решениями:

В чем разница между & и &&
подскажите в чем разница между двумя операторами на практике & и && в книге приведены простенькие примеры и результат у них...

При вставке в xml <t вставляет <t
При вставке в xml <t вставляет <t как это исправить?

В чем разница между "&" и "&&"?
В чем разница между ? if(1==1 & 1 ==2) Console.WriteLine("1"); if(1==1 && 1 ==2) ...

7
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
10.02.2017, 11:27
x && y - условие y проверяется только если x - true
x & y - условия x и y проверяются оба в любом случае
Поэтому здесь
C#
1
if (d != 0 & (n % d) == 0)
даже при d равном 0 будет производиться проверка
C#
1
(n % d) == 0
Добавлено через 6 минут
Цитата Сообщение от ShmelVG Посмотреть сообщение
Почему тогда здесь просто И :
Здесь побитовое И.
10 в бинарном виде - 1010
Логическое И над 0 (последним разрядом двоичного представления десятки) и 1 — 0, поэтому не выводится.
11 в бинарном виде - 1011
Логическое И над 1 и 1 — 1, поэтому выводится.
0
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
10.02.2017, 11:32  [ТС]
А если в & в левой части ложь, то какой смысл проверки второй части?
Т.е. получается если в первом примере в левой части истина, правая ложь, то всё равно условие выполнилось бы?
0
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
10.02.2017, 11:39
Лучший ответ Сообщение было отмечено ShmelVG как решение

Решение

Цитата Сообщение от ShmelVG Посмотреть сообщение
А если в & в левой части ложь, то какой смысл проверки второй части?
Например, если вам нужен результат побитового И над двумя числами, а не сравнение двух булевых значений
C#
1
if ((5 & 4) == 4)
Цитата Сообщение от ShmelVG Посмотреть сообщение
Т.е. получается если в первом примере в левой части истина, правая ложь, то всё равно условие выполнилось бы?
Не выполнится.
Как И, так и укороченное И (&&) возвращают true, только в случае равенства true обоих сторон.
1
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
10.02.2017, 11:47  [ТС]
Спасибо, более менее стало ясно. Конечно я не очень понял про побитовое решение, там 5 и 4 переводится в двоичный код? и сравнивается? Не понимаю просто))И как часто в реальной практике используются побитовые выражения?)
0
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
10.02.2017, 11:51
Лучший ответ Сообщение было отмечено ShmelVG как решение

Решение

Цитата Сообщение от ShmelVG Посмотреть сообщение
5 и 4 переводится в двоичный код? и сравнивается?
Переводится и производится побитовая операция И над каждой парой бит. Вики.
Цитата Сообщение от ShmelVG Посмотреть сообщение
И как часто в реальной практике используются побитовые выражения?
Если дело не касается низкоуровневых вещей, то довольно редко.
1
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
10.02.2017, 11:59
Лучший ответ Сообщение было отмечено ShmelVG как решение

Решение

ShmelVG,
для работы с булевыми - используйте && (как Вам писали выше если правыя и лева части равны то true если нет то false)
для битовых операций используйте & , например хотите наложить маску :

первое число (двочная система) 1011 1111
второе число (двочная система) 0000 0000 (вот это число называют маска)
опреция & вернет 0100 0000
1011 1111 & 0000 0000 = 0100 0000
те по сути инвертировали биты исходного числа.

Применять это можно когда Вам нужно получить например полубайт или несколько бит числа.

Добавлено через 4 минуты
Цитата Сообщение от Pikemaster Посмотреть сообщение
И как часто в реальной практике используются побитовые выражения?
Редно, но например при работе с устройствами (ну например через SerialPort), сталкивался с протоколом в котором числа хранились в полубайтах те по 4 бита, а мы миниму можем byte взять, вот и приходится извращаться)
1
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
10.02.2017, 12:08  [ТС]
Всем спасибо, очень сильно помогли разобраться)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2017, 12:08
Помогаю со студенческими работами здесь

Как изменить код чтоб в xml файл записывалось не с &gt; &lt; а с <>?
Нужно так: &lt;contents&gt; &lt;attribute name=&quot;Name&quot;&gt; &lt;value&gt;&lt;string val=&quot;Sally&quot;/&gt;&lt;/value&gt; &lt;/attribute&gt; Получается так: ...

Оператор && не может применяться к операндам типа string и int
Оператор &amp;&amp; не может применяться к операндам типа string и string string a, b, c, d; a = &quot;Avet&quot;; ...

Как правильно произвести двойную && и || проверку условия if()
Доброго времени суток! Как правильно произвести проверку нескольких условий Вот например int один = 1; ...

C чего начать изучение Windows Forms && WPF?
Подскажите, пожалуйста, какую книгу лучше почитать, чтобы начать изучение Windows Forms и Windows Presentation Foundation с нуля? У...

Програма которая рассчитывает значение функции с использованием оператора if/else и логических операций && и ||
Програма которая рассчитывает значениеНаписать программу на языке С #, которая рассчитывает значение функции с использованием оператора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru