【问题标题】:Error while using static variable使用静态变量时出错
【发布时间】:2013-10-08 11:28:07
【问题描述】:

我在学C,为什么上面的静态变量不增加1

#include <stdio.h>

int foo()
{
  static int a = 0;
  return a+1; 
}

int main()
{
  int i;
  for (i = 0; i < 10; i = foo())
    printf("%d\n", i);
  return 0;
}

这段代码哪里出错了?

【问题讨论】:

  • 为什么会这样?
  • @ColeJohnson 然后我不知道这没有任何意义。现在我明白了。

标签: c function variables static


【解决方案1】:

因为您没有将任何内容存储回其中。这应该适合你:

int foo()
{
  static int a = 0;
  return ++a; 
}

这里return ++a 表示a = a + 1,即先增加a,然后返回它的值。 a+1 计算结果为 1,但不会将任何内容存储回 a

【讨论】:

    【解决方案2】:

    您永远不会为“a”变量赋值。您只是从例程中返回 a+1 的值。

    【讨论】:

      【解决方案3】:

      当您返回 a+1 时,这是一个无限循环。每次它会返回 0+1 并且你的 a 值没有得到更新。根据您在循环中的条件,循环无限运行,直到发生超时。 在这里试试这个 a 的值是在每个函数调用中不断更新。

      int foo()
      {
          static int a = 0;
          a++;
          return a;
      }
      

      【讨论】:

        【解决方案4】:

        以下将起作用:

        #include <stdio.h>
        
        int foo()
        {
            static int a = 0;
            a++;
            return a;
        }
        

        【讨论】:

          猜你喜欢
          • 2015-05-22
          • 2012-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-23
          • 2018-07-31
          • 2010-10-21
          相关资源
          最近更新 更多