-2

我在下面有这种情况:

 if (MovementDetected)
 {
   if (MovementCount++ == 0)
   {
     TimeCount = WindowTime; /* e.g this is 10 seconds*/
   }
   if (MovementCount > MovementLimit)
   {
     MovementWasDetectedPreviously = TRUE;
   }
   if (MovementWasDetectedPreviously && TimeCount-- == 0)
   {
    Alarm=TRUE;
   }
 }
if (TimeCount-- == 0)
  {
    Alarm=FALSE;
    MovementCount = 0;
  }
MovementDetected = FALSE;

我想知道如果条件不正确,条件“if (TimeCount-- == 0)”是否会将TimeCount减 1 ?

4

2 回答 2

1

是的,它确实减少了检查

int i=5;
if(i--  == 0)
{
}
printf("%d\n",i);

i是 4 所以i里面if()减少了。

i--是一个被执行的表达式,i = i-1因此 的值i将递减。

请注意,后递减返回操作数的值并将其递减。

于 2015-01-21T13:10:40.003 回答
0

在声明中

if (TimeCount-- == 0)

后缀 -- 运算符的优先级高于相等 (==) 运算符。因此,无论 if 语句的结果如何, TimeCount 都会递减,因为它在评估之前递减

但请记住,评估将使用 TimeCount 的旧值(递减之前)执行,就像在后缀运算符的情况下一样。

因此,无论 if 语句的结果如何,TimeCount 的值都会递减。

于 2015-08-11T19:26:06.167 回答