考虑以下 C 程序:
#include
int r(){
int static num=7;
return num--;
}
int main() {
for(r();r();r()) {
printf("%d ",r());
};
return 0;
}
程序执行时将显示以下哪一个值?
(一) 41
(乙) 52
(三) 63
(四) 630答案:(乙)
说明:根据 C 中的“for”循环,
for (initialization expr; test expr; update expr)
{
// body of the loop
// statements we want to execute
}
代码将按照以下流程图执行,
另外,请注意,在给定的 return 语句中有 postdecrement (num – –),因此它将返回“num”的先前值,然后将其减 1。
静态将为变量 int “num” 分配一次内存,所有更改都将发生在这里。
#include
int r(){
int static num=7;
return num--;
}
int main() {
for(r();r();r()) {
printf("%d ",r());
};
return 0;
}
因此,给定的代码将打印: 5 2 。
选项(B)是正确的。
这个问题的测验