我的一个考题是:
! ( ! ( a != b) && ( b > 7 ) )
Run Code Online (Sandbox Code Playgroud)
选择:
a) (a != b) || (b < 7)
b) (a != b) || (b <= 7)
c) (a == b) || (b <= 7)
d) (a != b) && (b <= 7)
e) (a == b) && (b > 7)
Run Code Online (Sandbox Code Playgroud)
最初,我以为会是 D。这是不正确的,我明白为什么了。我不明白逻辑否定运算符如何反转 && 和大于/小于。我相信我已经将范围缩小到前两个。是否有任何实例 > 会更改为 <= ?
是否有任何实例 > 会更改为 <= ?
答案:每次你否定它。
考虑x > 1。对此的否定是明显的x <= 1。如果你简单地否定它,x < 1那么两种情况都不涵盖这种x == 1情况。
话虽如此,给定的布尔值! ( ! ( a != b) && ( b > 7 ) )可以分解如下:
鉴于:
! ( !(a != b) && (b > 7))
否定a != b:
! ((a == b) && (b > 7))
分发!:
!(a == b) || !(b > 7)
否定a==b:
(a != b) || !(b > 7)
否定b>7:
(a != b) || (b <= 7)
因此,答案是 B。