为什么while循环在此代码中停止为0?

时间:2016-11-09 23:05:28

标签: c++ c while-loop decrement

#include <stdio.h>

/* function declaration */
void func(void);

static int count = 5; /* global variable */

main() {

   while(count--) {
  func();
}

return 0;
}

/* function definition */
void func( void ) {

static int i = 5; /* local static variable */
i++;

printf("i is %d and count is %d\n", i, count);
}

我正在看while循环,并且没有理由为什么它应该停在0但是当计数达到0时,它会停止。我尝试将count设置为0,并使用 - 并且它变为-1,因此没有理由为什么这应该从我看到的0停止。

2 个答案:

答案 0 :(得分:1)

  

但是当计数达到0时,它会停止

这是错误的结论,它会在count达到-1时停止,如果在循环之后立即放置print语句,则可以检查它。在这种情况下它不执行循环体,但这就是循环的工作原理。

答案 1 :(得分:0)

变量最后应用后使用的--运算符。当count为零(计算为false)时,条件为false,然后它应用count--(因此count为-1​​)然后退出循环。

对于您的文化,您可以执行--count,在检查条件之前会减少count