x =!x 是什么意思?

what does x =!x means?

阅读 MuPDF 时遇到源代码行

x = !x;

想知道以上代码的作用吗?

虽然编译也报错

assuming signed overflow does not occur when simplifying 
condition to constant [-Werror=strict-overflow ]

!x 将计算为 01,具体取决于 x 的值。

  • 如果 x0,它的计算结果是 1
  • 否则,计算结果为 0

假设 x 是布尔值,如果为真,则设置 x 为假,如果为假,则设置为真。