📜  门| GATE CS 2019 |第 36 题

📅  最后修改于: 2021-09-26 03:44:18             🧑  作者: Mango

考虑以下 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)是正确的。

这个问题的测验