Думайте о !
(оператор отрицания) как "не", ||
(булево-или-оператор) как "или" и &&
(булево-и-оператор) как "и".См. Операторы и Приоритет оператора .
Таким образом:
if(!(a || b)) {
// means neither a nor b
}
Однако, используя Закон де Моргана , он можетзаписывается как:
if(!a && !b) {
// is not a and is not b
}
a
и b
выше может быть любым выражением (например, test == 'B'
или любым другим).
Еще раз, если test == 'A'
и test == 'B'
, являются выражениями, обратите внимание на расширение 1-й формы:
// if(!(a || b))
if(!((test == 'A') || (test == 'B')))
// or more simply, removing the inner parenthesis as
// || and && have a lower precedence than comparison and negation operators
if(!(test == 'A' || test == 'B'))
// and using DeMorgan's, we can turn this into
// this is the same as substituting into if(!a && !b)
if(!(test == 'A') && !(test == 'B'))
// and this can be simplified as !(x == y) is the same as (x != y)
if(test != 'A' && test != 'B')