-3

我无法理解以下代码在做什么s

 if(!s--)

s是一个int

4

2 回答 2

3

实际上,这是误导。

您正在测试s与 0 不同(带有if (!s))。然后,之后,无论结果如何,你都在减少它。

所以,这是两种不同的操作。可以这样写:

if (!s)
{
     s--;
     //...
}
else
{
     s--;
}
于 2014-12-05T10:40:50.323 回答
2

!称为negation运算符。它是一个逻辑运算符。

请参阅此处的维基百科条目

if(!s--)

它执行的顺序

  1. 检查sis0或 not 的值,如果s0,则if条件为成功 [感谢!操作员],否则,失败。
  2. 之后,递减s一个单位。
  3. 基于对if条件的评估,继续执行[if条件下的代码,或下一个代码块]。
于 2014-12-05T10:39:11.903 回答