while循环和静态变量

时间:2016-10-11 08:21:45

标签: c

这是我研究静态变量的代码。

#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);
}

我在终端上编译并运行了这个输出

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

我的查询是为什么当count的值等于0时循环停止了?为什么它不会走向负无穷大?

6 个答案:

答案 0 :(得分:4)

因为<p id="hidden">Surprise!</p> <input type="text" id="name" /> <input type="button" onclick="Test()" value="press me" /> 等于0值。

当计数变为等于false时,0条件变为while

答案 1 :(得分:0)

因为在你的代码中写了

while (count--) 

并且在C中,true定义为0以外的任何值,false定义为0。当计数达到零时,你的while循环停止。

答案 2 :(得分:0)

当你的循环达到0时,它会停止,因为在while循环中它被计为一个错误的布尔值,所以它会停止。

答案 3 :(得分:0)

当值为true时,将执行while()。在这种情况下,任何正数都被视为true。另一方面,零被解释为false,从而停止循环。

基本上While(true),做点什么。到达false后, while()循环停止。

如果你想消极,那么你需要一个 for()循环。

#include <stdio.h>

int main()
{
    for(int i = 10; i > -10; i--)
    {
        printf("%d", i);
    }

    return 0;
}

或者,如果你想使用 while(),你应该这样做:

#include <stdio.h>

int main()
{
    int position = 10;

    while(position > -10)
    {
        printf("%d", position);
        position--;
    }

    return 0;
}

答案 4 :(得分:0)

0 == false

while (0)

然后循环将停止。

由于您也使用c++标记了帖子,我将使用boolalpha在c ++中为您提供示例,其中bool值被提取并表示为true或{{1 }}:

false

现在:

bool b = -5;
cout << boolalpha << b; // outputs: true

答案 5 :(得分:0)

while循环运行,直到它的参数不同于&#34; false&#34;,这是0.所以当count等于0时,它会停止。