Для чего нужны эти операторы, если побитовые |
, &
справляются с этим?
#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");
}
Логические операторы работают по "короткой схеме", т.е. если результат вычисления становится известен заранее, то дальнейшее вычисление не производится.
В частности это широко используется в условных операторах, например:
if (ptr && ptr->func()) { ...
Если ptr
нулевой, то вызов ptr->func()
никогда не случится.
Побитовые операторы вычисляют оба своих операнда всегда, и могут работать только с целочисленными аргументами, в то время как логические работают с любыми, которые могут быть преобразованы неявно в булевы.
не получается сделать переопределение ++ как движение по спискуПомогите пожалуйста исправить проблему
Вдруг возник такой простой вопрос: нужно просто сравнить два массива чаров
Программа работает верно для небольших отрезков, но когда задается отрезок к примеру от 1 до 10000000 начинается долгий процесс перебораНужно...