boolean - 为什么 `!!(a||!a)` 总是正确的?
问题描述
我是一名 Java 菜鸟,在学校里我们有一些家庭作业。我将解释布尔术语,但我不明白其中之一。
问题是
为什么这个表达式总是正确的?
!!(a||!a)
我理解括号中的部分,但它前面的两个感叹号是什么意思?
如果第一个 a = true --> !a = not true --> !! (双重否定 = 真?) a = 真,第二个 !a = 不真 --> !!a = 真 --> !!!a = 不真
如果我是对的,为什么这个表达总是正确的?我被击败。
你们中的任何人都可以向我解释一下吗?
谢谢你的帮助!
解决方案
如果 "a" 为 TRUE 添加 "!a" 为 FALSE
知道a
是真的还是假!a
的(! 用于否定;在这种情况下,否定 true -> false)
Ifa||!a
表示true或false,从那个表达式中你得到true ...
你可以这样看:
!!(true)
.
双重否定的结果是什么?真。然后,true(true) = (aka a||!a)最终使您的表达式!!(a||!a)
始终为 true。
如果 "a" 为 FALSE 且 "!a" 为 TRUE
知道a
是假的并且!a
是真的(! 用于否定;在这种情况下,否定 false -> true)
Ifa||!a
表示false或true,从那个表达式中你得到true ...
你可以这样看:
!!(true)
.
双重否定的结果是什么?真。然后,true(true) = (aka a||!a)最终使您的表达式!!(a||!a)
始终为 true。
推荐阅读
- ios - iOS推送通知:在用户离线注销时为用户取消注册推送通知的最佳方式?
- css - Material UI:给 TableBody 一个最大高度并使其垂直滚动
- c# - 将参数从自定义菜单传递到报告
- database - 为什么 Janus Graph 不称为框架,而 Apache TInkerPop 是?
- javascript - 将 JSON 对象转换为 PHP 数组
- css - 防止 :after close-quote 换行
- javascript - Stripe 正在创建客户,但不向卡收费
- wordpress - 重命名和转移网站成功,但旧的社交媒体链接已损坏
- reactjs - 如果在 React/Redux 中单击单元格,如何访问行
- tensorflow - TensorFlow 检查点目录中图 .meta 的文件名