以下程序的输出是什么?
#include
int funcf (int x);
int funcg (int y);
main()
{
int x = 5, y = 10, count;
for (count = 1; count <= 2; ++count)
{
y += funcf(x) + funcg(x);
printf ("%d ", y);
}
}
funcf(int x)
{
int y;
y = funcg(x);
return (y);
}
funcg(int x)
{
static int y = 10;
y += 1;
return (y+x);
}
(A) 43 80
(B) 42 74
(C) 33 37
(D) 32 32答案: (A)
说明: count = 1并且一直到2,因此以下语句将被执行两次。
y += funcf(x) + funcg(x);
第一个调用-funcg(x); // y = 11 y + x = 16。
第二次调用funcg(x); // y = 12 y + x = 17。
第一次迭代-> main()-> y = 16 + 17 +10 = 43
第二次迭代-> main()y = 18 + 19 +43 = 80
所以答案是A
在以下网址查看有关静态变量的更多信息:https://www.geeksforgeeks.org/g-fact-80/
这个问题的测验