逻辑计算中,如何遇true保持,遇false取反?

比如分别有两个布尔变量a,b,当b=true时,返回a,b=false时,返回!a,如何用简单运算实现?
a xxx b //xxx应如何写?

其实是个这种问题,如何:
真真得真
真假得假
假假得真

注:三元表达式暂不考虑,谢谢。

阅读 6.4k
4 个回答

这样?

var bool = true;//or false
bool ? a : !a

你这个比较像异或

console.log(!(true ^ true))//true
console.log(!(false ^ true))//false
console.log(!(false ^ false))//true

a ? a : !a
a && a || !a
下次提问,讲清楚了。。以下是修改问题后的答案。
b && a || !b && !a || a

三元表达式 java和javascript 一样

x?x:!x 最简洁的

保持谁?取反谁?a吗?如果说a是一个布尔型变量那这样不是相当于直接返回true吗?atrue保持trueafalse取反a,那不还是true吗?

这样是没有意义的,因此我假设题主想用a控制另一个布尔型的变量b

设运算结果为Q,列出真值表:

a b Q
true true true
true false false
false true false
false false true

即可得到Q = ! (a ^ b),完事。其中^为异或运算。

如果b是其它类型的,对于脚本语言来说,可以Q = a ? b : !b,对于强类型语言来说,你需要为b规定一个“取反”后的值,比如NULL或其它的什么鬼,然后Q = a ? b : NULL,当然你也可以为b重载!运算符。

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