Разница между | и || или & и && [дубликаты]

На этот вопрос уже есть ответ здесь:

Почему мы не можем использовать побитовые операторы для типов с плавающей запятой и двойных 2 ответа

Это два простых примера на C ++, написанных на Dev-cpp C ++ 5.4.2:

float a, b, c;

if (a | b  & a | c)
   printf("x = %.2f\tF = %.0f\n", x, F);
else
   printf("x = %.2f\tF = %.2f\n", x, F);

и этот код:

float a, b, c;

if (a || b  && a || c)
   printf("x = %.2f\tF = %.0f\n", x, F);
else
   printf("x = %.2f\tF = %.2f\n", x, F);

Может кто-нибудь сказать мою разницу между|| > | а также& > &&, Второй код работает, но первый нет. И компилятор выдает сообщение об ошибке:

[Ошибка] недопустимые операнды типов «float» и «float» для двоичного «оператора &».

Ответы на вопрос(4)

Ваш ответ на вопрос