Другие языки программирования и технологии

Объясните пожалуйста разницу между & и &&

Собственно хочу понять что означает строка в С++:
if (x && y) {...}
если x и y - байты.

Цель моего желания - записать эту строчку на С# (который не хочет выполнять подобные операции ни с чем кроме bool).
Если речь идет о логических операциях:
С++ в отличие от C# автоматически пытается преобразовать значения "x" и "y" в тип Boolean, после чего сравнивает. Видимо C# этого лишен и надо явно преобразовывать типы.

if (x && y) {...} тоже самое, что и if ((bool)x && (bool)y) {...}

&& выполняет сравнение между двумя логическими операндами
& выполняет поразрядное сравнение между двумя операндами. (сравниваются разряды на одинаковых позициях)
Виктор Затолокин
Виктор Затолокин
40 015
Лучший ответ
&&, если первая операция будет false, то проверки второй операции не будет
&, если первая операция будет false, то вторая операция тоже выполняется
кроме того && - быстрее, & - возвращает точный результат, но только после всех вычислений
аналогично кстати и для | и ||
Ринат Касимов
Ринат Касимов
39 410
Один символ побитовое И
Т. е. есть 2 числа (запишу в двоичном виде ) :
a = 00001010;
b = 00001100;
a&b вернёт 00001000;
Максим Тарасов
Максим Тарасов
22 184
На C#
if (x != 0 && y != 0)
2 это и, а 1, вроде-бы операция разименования указателя в с++
Алексей Зотов
Алексей Зотов
8 401
ТОчно не знаю, но кажется, что если ставить два амперсанда и например первой переменной идёт ложь, то и результат сразу автоматически будет ложь. Если же один амперсанд, то результат зависит от обех переменных, даже если первая ложна и результат соответственно тоже ложен. Такая оптимизация) . Разименование указателя обозначается одним амперсандом, так что я уж и не знаю что думать. Кстати, в си-шарп можно пользоваться только двойным амперсандом, на сколько я знаю.
Липецкий Алексей, всё верно ответил.