程序逻辑上取反条件写法的原理

我们写程序时候,经常会遇到if/else的情况,比如下:

let a = 1, b = 2;
if(a === 1 && b === 2) {
    // 此处为a=1且b=2的情况
} else {
    // 此处为相反的情况
}

如果上面的逻辑中,我想将else中的逻辑当做if进行判断,该怎么写呢,原理上的依据是什么,我记得大学时候课本有过这样的讲述,但是不记得了,想去搜索,可能是因为无法准确描述出这个问题,找不到对应的答案,如果哪位知道,还麻烦告知一下原理,或者能给一个讲述此逻辑原理的链接,感谢!
上面的ab其实有如下四种情况:

1. a = 1, b = 2
2. a = 1, b != 2
3. a != 1, b = 2
4. a != 1, b != 2

我们上面的if(a === 1 && b === 2)是判断了第一种情况,剩下的2,3,4当做else中兜底了,如果我想将2,3,4的3中情况当做一个条件,写到一个if中,else处理a === 1 && b === 2的情况,写法如下,但是原理上该怎么解释呢:

if(a !== 1 || b !== 2) {
    // 此处满足2,3,4种情况,但是原理是什么
} else {
    // 此处为a === 1 && b === 2的第1种情况
}
阅读 5.5k
5 个回答

a === 1 && b === 2 逻辑取反就是 !(a === 1 && b === 2),这样是最简单的写法。

原条件中是两个条件需要同时满足 (&&),所以只要有一个条件不能满足就达到了相反条件,用语言描述就是 a !== 1 或者 b !== 2,组合起来就是 a !== 1 || b !== 2


VSCode 的重构功能可以自动转换:

1.对a == 1 && b == 2取反,即 !(a == 1 && b == 2)
2.去括号。 去括号时括号内的或与关系需要倒置,即 a!==1 ||b!==2。
是大学哪门课程学的我也忘记了,计算机组成原理,还是电路……

原理是 a && b 取反是 !a || !b
可能要在离散数学里找一找解释?

一个条件:
如果明天下雨,我就不去上班了。
换言之:
如果明天不下雨,我就会去上班。

两个条件:
如果明天下雨并且我感冒了,我就不去上班了。
换言之:
如果明天不下雨,或者我没有感冒,我都会去上班。

没有什么原理可言,这是自然逻辑规律,不光程序里是这样。高中数学的充分必要条件好像也有这种内容?概念上是离散数学中逻辑学研究的范畴。

若A且B能推出C的话,那么非A或非B就能推出非C。

若A或B能推出C,则非A且非B就能推出非C。

数电 逻辑门

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题