&& (логическое и)
Оператор возвращает истину только в том случае, если оба операнда равны истине.
bool a = true;
bool b = false;
bool c = a && b; // false
a = true;
b = true;
c = a && b; // true
|| (логическое или)
Оператор возвращает истину если хотя бы один из операндов равен истине.
bool a = true;
bool b = false;
bool c = a && b; // true
a = false;
b = false;
c = a && b; // false
! (логическое отрицание)
У оператора только один операнд. Возвращает истину если значение операнда - ложь (false) и наоборот:
bool a = true;
bool b = !a; // false
a = false;
b = !a; // true