【问题标题】:what does x =!x means?x =!x 是什么意思?
【发布时间】:2015-03-24 06:06:19
【问题描述】:

而 readinf MuPDF 遇到源代码行

x = !x;

想知道上面的代码是做什么的吗?

虽然编译也会报错

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

【问题讨论】:

  • 您确定诊断与此语句有关吗?能不能去掉,编译后再放回去编译确认?

标签: c ghostscript mupdf


【解决方案1】:

!x 将评估为01,具体取决于x 的值。

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

【讨论】:

  • 我没有收到那个错误。相应的警告应该在 gcc 中使用 -Wall 启用,我猜想通过 clang 扩展。我没有看到后者的错误。您应该发布一个重现错误的 MCVE。
  • 使用标志严格溢出
  • @Vineet1982 我已经试过了。没有错误。为什么不发布 MCVE?
【解决方案2】:

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

【讨论】: