为什么 c =!如果 c 是布尔假,则 c 为真?

Rad*_*une -4 java boolean-logic boolean

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

boolean c = false;
 
c =! c;
Run Code Online (Sandbox Code Playgroud)

不是将 false boolean 与 false boolean 进行比较吗?或者它可能将“NOT false”分配给 c,这是真的?

Era*_*ran 6

c =! c(作为等效项更具可读性c = !c)正在分配cto的否定c。此赋值的值是 的新值c,可能是trueifc原来的值false

如果你想比较c!c,它应该是c != c


And*_*ner 5

c =! c; 表示“将其当前值的补数分配给 c”。

如果其当前值为假,则其值变为真。

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

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

System.out.println(c != c);
Run Code Online (Sandbox Code Playgroud)