Собственно хочу понять что означает строка в С++:
if (x && y) {...}
если x и y - байты.
Цель моего желания - записать эту строчку на С# (который не хочет выполнять подобные операции ни с чем кроме bool).
Другие языки программирования и технологии
Объясните пожалуйста разницу между & и &&
Если речь идет о логических операциях:
С++ в отличие от C# автоматически пытается преобразовать значения "x" и "y" в тип Boolean, после чего сравнивает. Видимо C# этого лишен и надо явно преобразовывать типы.
if (x && y) {...} тоже самое, что и if ((bool)x && (bool)y) {...}
&& выполняет сравнение между двумя логическими операндами
& выполняет поразрядное сравнение между двумя операндами. (сравниваются разряды на одинаковых позициях)
С++ в отличие от C# автоматически пытается преобразовать значения "x" и "y" в тип Boolean, после чего сравнивает. Видимо C# этого лишен и надо явно преобразовывать типы.
if (x && y) {...} тоже самое, что и if ((bool)x && (bool)y) {...}
&& выполняет сравнение между двумя логическими операндами
& выполняет поразрядное сравнение между двумя операндами. (сравниваются разряды на одинаковых позициях)
&&, если первая операция будет false, то проверки второй операции не будет
&, если первая операция будет false, то вторая операция тоже выполняется
кроме того && - быстрее, & - возвращает точный результат, но только после всех вычислений
аналогично кстати и для | и ||
&, если первая операция будет false, то вторая операция тоже выполняется
кроме того && - быстрее, & - возвращает точный результат, но только после всех вычислений
аналогично кстати и для | и ||
Один символ побитовое И
Т. е. есть 2 числа (запишу в двоичном виде ) :
a = 00001010;
b = 00001100;
a&b вернёт 00001000;
Т. е. есть 2 числа (запишу в двоичном виде ) :
a = 00001010;
b = 00001100;
a&b вернёт 00001000;
На C#
if (x != 0 && y != 0)
if (x != 0 && y != 0)
2 это и, а 1, вроде-бы операция разименования указателя в с++
ТОчно не знаю, но кажется, что если ставить два амперсанда и например первой переменной идёт ложь, то и результат сразу автоматически будет ложь. Если же один амперсанд, то результат зависит от обех переменных, даже если первая ложна и результат соответственно тоже ложен. Такая оптимизация) . Разименование указателя обозначается одним амперсандом, так что я уж и не знаю что думать. Кстати, в си-шарп можно пользоваться только двойным амперсандом, на сколько я знаю.
Липецкий Алексей, всё верно ответил.
Похожие вопросы
- Знающие люди объясните мне пожалуйста разницу между 32 бит и 64 битом!
- Для чего нужен указатель this и каков его принцип работы? Объясните пожалуйста самым простым языком, как 2+2.
- Объясните пожалуйста вот этот алгоритм в Free Pascal
- объясните пожалуйста как работать с циклами с предусловием, с постусловием, с параметром
- Объясните пожалуйста как работает компилятор.
- Турбо Паскаль. Объясните пожалуйста
- У Оли есть доступ к сети Интернет по высокоскоростному одностороннему радиоканалу.. . (Объясните пожалуйста как решать)
- Объясните пожалуйста, что такое Объектно ориентированное программирование?
- Объясните, пожалуйста, что за "много действий"? Нажать на кнопку "Подписаться" - это много действий?
- Объясните пожалуйста алгоритм упрощенного метода ньютона