3

Извините, если это вопрос типа «Логические операторы 101». Я смотрю на свой экран в течение 15 минут, пытаясь обернуть вокруг себя голову, но я застрял.Могу ли я упростить этот условный оператор, который использует оператор логического отрицания?

Есть ли более кратким/элегантным способом фразу следующим образом (это синтаксис JavaScript, но это не зависит от языка вопрос):

if (!something && !something_else) { 
    // do something 
} 

На основании некоторых экспериментов, это не кажется, логический эквивалент:

if (!(something && something_else) { 
    // do something 
} 

Кроме того, может ли кто-либо рекомендовать онлайн-ресурс для дальнейшего изучения таких вопросов? Я предполагаю, что этот тип вещей покрывается абстрактным уровнем в учебных программах по информатике, и это существенный пробел в моих знаниях в области программирования, которые я действительно хотел бы заполнить. Благодаря!

ответ

10
(Not A) And (Not B) 

эквивалентен:

Not (A Or B) 

Это применение De Morgan's laws

+2

+1 Разбейте линию, измените знак! –

+0

Спасибо, Митч! Все правильные ответы здесь - и все они очень ценятся, но я также ценю ссылку, которую вы включили. Это именно то, что я искал. – Bungle

+0

@Bungle. Тогда вы должны принять его ответ. Он по достоинству оценят, что я уверен – Ben

3

Правильное выражение должно быть:

if (!(something || something else)) { 
    // do something 
} 

При применении отрицания он переключает операторы между И и ИЛИ.

3

Я думаю, что вам нужно

if (!(something || something_else)) { 
    // do something 
} 

! Что-то & &! Something_else означает "ни то и ни something_else", что эквивалентно "ни (что-то или something_else)"

 Смежные вопросы

  • Нет связанных вопросов^_^