📜  门| GATE CS 2019 |简体中文第36章

📅  最后修改于: 2021-06-29 23:32:14             🧑  作者: Mango

考虑下面的C程序:

#include
  
int r(){
 int static num=7;
 return num--;
}
  
int main() {
      
 for(r();r();r()) {
  printf("%d ",r());
  };
    
 return 0;
}

程序执行时将显示以下哪个值?
(A) 41
(B) 52
(C) 63
(D) 630答案: (B)
说明:根据C中的“ for”循环,

for (initialization expr; test expr; update expr)
{    
     // body of the loop
     // statements we want to execute
}

代码将按照以下流程图执行,

另外,请注意,给定的return语句中存在递减(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)是正确的。
这个问题的测验