我正在学习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;
}
这段代码的错误在哪里?
因为您没有将任何内容存储回其中。这应该适合你:
int foo()
{
static int a = 0;
return ++a;
}
这里的return ++a
意思是a = a + 1
,即先增加a,然后返回它的值。a+1
评估为1
但不将任何内容存储回a
您永远不会为“a”变量赋值。您只是从例程中返回 a+1 的值。
以下将起作用:
#include <stdio.h>
int foo()
{
static int a = 0;
a++;
return a;
}
当您返回 a+1 时,这是一个无限循环。每次它会返回 0+1 并且你的 a 值没有得到更新。根据您在循环中的条件,循环无限运行,直到发生超时。在这里试试这个 a 的值是在每个函数调用中不断更新。
int foo()
{
static int a = 0;
a++;
return a;
}