静态存储类C ++计数

时间:2018-07-08 00:58:28

标签: c++

我是C ++的新手,想知道为什么以下while循环在编译和执行时会在0处停止?

#include <iostream>

void func(void);

static int count = 10;

int main() {

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

   return 0;
}


void func( void ) {
static int i = 5; // local static variable
i++;
std::cout << "i is " << i ;
std::cout << " and count is " << count << std::endl;
}

示例来自:https://www.tutorialspoint.com/cplusplus/cpp_storage_classes.htm

1 个答案:

答案 0 :(得分:2)

10次循环后,当count为零时,它将评估count。如果条件不为零,则c ++中的条件只会前进,因此一旦count达到零,它将停止。

在最后的几个循环中,执行如下:

  • 计算count为1时的条件:count非零,因此它将继续执行循环主体
  • 后缀递减计数,因此在评估条件后后计数变为零
  • func()打印出i和count,现在为零。
  • 现在计算计数为0的条件:condition为零,因此它停止并且不打印其他任何内容。