我正在学习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;
}
此代码中的错误在哪里?
答案 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;
}