为什么 c =!如果 c 是布尔值,c 是 true,则为 false?[已结束]

Why c =! c is true if c is boolean false? [closed]

提问人:RadioTune 提问时间:4/5/2021 更新时间:4/5/2021 访问量:85

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

2年前关闭。

我不明白为什么这段代码返回 true:

boolean c = false;
 
c =! c;

这不是在比较假布尔值和假布尔值吗?或者也许它正在为 c 分配“NOT false”,这是真的?

java 布尔逻辑

评论

1赞 Sweeper 4/5/2021
“或者也许它给 c 分配了”NOT false“,哪个是真的?”完全!
2赞 Saud 4/5/2021
我不知道为什么人们会投票否决这样的问题?每个人都必须从某个地方开始。这家伙只需要解释一下这里发生的事情。他可能是编程新手!

答:

6赞 Eran 4/5/2021 #1

c =! c(作为等价物更具可读性)是将 的否定分配给 。此赋值的值是 的新值,如果最初是 。c = !cccctruecfalse

如果要比较 ,它应该是 。c!cc != c

5赞 Andy Turner 4/5/2021 #2

c =! c;意思是“将当前值的补码分配给 C”。

如果其当前值为 false,则其值变为 true。

也许你的意思是,无论真假,这都是假的。c != cc

但是,请注意,你不能写,因为这不是一个有效的语句:你需要以某种方式使用表达式,例如c != c;

System.out.println(c != c);