【发布时间】:2019-10-11 01:59:56
【问题描述】:
我在这段代码中有一个问题,使用 static 关键字。在这里,在n = 3之后,我以为r的值会是5,但我发现r的值是50!我不知道static 在这里是如何工作的:
int magic(int n)
{
static int r = 5;
if (n <= 0) return 10;
if (n > 3)
{
r = 50;
return(r + magic(n-1));
}
return(r - magic(n-1));
}
int main()
{
int x;
x = magic(8);
printf("%d",x);
}
这里的输出是 290,因为 r 在所有情况下的值都是 50。请有人可以帮助我。
【问题讨论】:
-
查找与 C 语言相关的关键字
static。如果您是这样想的,这并不意味着“常数”。 -
函数名不合适。这没有什么神奇之处。
-
其实输入的代码是410!为了获得 290(如您所说),我需要将行更改为:
if (n>3)。请确保您五个我们的代码是您正在使用的代码!