使用静态变量时出错

时间:2013-10-08 11:28:07

标签: c function variables static

我正在学习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;
}

此代码中的错误在哪里?

4 个答案:

答案 0 :(得分:5)

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

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

此处return ++a表示a = a + 1,即先增加第一个然后返回其值。 a+1评估为1,但不会将任何内容存储回a

答案 1 :(得分:0)

您永远不会为“a”变量赋值。你只是从日常工作中返回一个+ 1的值。

答案 2 :(得分:0)

以下内容可行:

#include <stdio.h>

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

答案 3 :(得分:0)

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

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