静态局部变量重置自身 - c

时间:2017-01-14 01:07:19

标签: c variables static

我试图使用一个静态变量,我在每个函数调用中递减但是它一直在重置(对于静态变量来说有点奇怪):

int func()
{
 static int x;
 x = 5;
 x--;
 return (x);
}

int main(int ac, char **av)
{
 int x;

 x = 5;
 while (x != 0)
  {
   printf("%i\n", func());
   x--;
  }
}

输出是:

  

5 5 5 5 5

你必须知道它是出于学校目的,我们的老师禁止我们在同一行宣布和初始化变量。我们也无法通过论证。

3 个答案:

答案 0 :(得分:2)

您可以声明并初始化静态变量和多行,如下所示:

static int x
= 5;

答案 1 :(得分:2)

如果你不能倒计时,请计算:

int func(void) {
  static int x;
  return 5 - x++;
}

用法:

for (int i = 0; i != 5; ++i) {
  printf("%d\n", func());
}

答案 2 :(得分:0)

使用另一个静态变量来检查先前是否已初始化x

int func()
{
  static int x, initialized; /* Both initially 0 */
  if (!initialized) { x = 5; initialized = 1; }
  x--;
  ...
}