Могу ли я упростить этот условный оператор, в котором используется оператор логического отрицания?

Извините, если это вопрос типа "Логические операторы 101". Я смотрел на свой экран в течение 15 минут, пытаясь понять его, но я застрял.

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

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

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

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

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


person Bungle    schedule 05.07.2010    source источник


Ответы (4)


(Not A) And (Not B)

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

Not (A Or B)

Это применение законов Де Моргана.

person Mitch Wheat    schedule 05.07.2010
comment
Спасибо, Митч! Все правильные ответы здесь - и все они очень ценятся, но я также ценю ссылку, которую вы включили. Это именно то, что я искал. - person Bungle; 05.07.2010
comment
@Бангл. Тогда вы должны принять его ответ. Он оценит, что я уверен - person Ben; 05.07.2010
comment
@Бен: Подойдет. Похоже, что SO заставляет вас ждать ~ 10 минут, чтобы сделать это. - person Bungle; 05.07.2010

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

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

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

person Nathan S.    schedule 05.07.2010

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

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

!something && !something_else означает «ни что-то, ни что-то_еще», что эквивалентно «ни (что-то или что-то еще)»

person Ben    schedule 05.07.2010

Слово для того, что вы описываете, это ни ворота, или не или ворота.

person CPlusPlusNumberCruncer    schedule 23.04.2015