我试图使用一个静态变量,我在每个函数调用中递减但是它一直在重置(对于静态变量来说有点奇怪):
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
你必须知道它是出于学校目的,我们的老师禁止我们在同一行宣布和初始化变量。我们也无法通过论证。
答案 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--;
...
}