Для чего нужен логический оператор || и &&?

148
29 апреля 2022, 16:10

Для чего нужны эти операторы, если побитовые |, & справляются с этим?

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 3;
    if ((a == 1) && (b == 3)) printf("True");
}

Равносилен по результату:

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 3;
    if ((a == 1) & (b == 3)) printf("True");
}
Answer 1

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

В частности это широко используется в условных операторах, например:

if (ptr && ptr->func()) { ... 

Если ptr нулевой, то вызов ptr->func() никогда не случится.

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

READ ALSO
Переопределение операции ++ c++

Переопределение операции ++ c++

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

281
Скорость сравнения двух массивов char

Скорость сравнения двух массивов char

Вдруг возник такой простой вопрос: нужно просто сравнить два массива чаров

164
Проблема с оптимизацией цикла

Проблема с оптимизацией цикла

Программа работает верно для небольших отрезков, но когда задается отрезок к примеру от 1 до 10000000 начинается долгий процесс перебораНужно...

279