📜  C测验– 106 |问题1

📅  最后修改于: 2021-05-25 22:32:22             🧑  作者: Mango

假设int大小为4个字节,那么在我们编译并运行以下程序时会发生什么?

#include “stdio.h”
int main()
{
  printf(“GeeksQuiz\n”);
  main();
  return 0;
}

(A)我们不能在main()中使用main(),编译器将通过显示编译器错误来捕获它。
(B) GeeksQuiz将被打印2147483647次,即(2等于31的幂)– 1。
(C)它会无限次打印GeeksQuiz,即该程序将继续运行直到它被其他方式(如CTRL + C或CTRL + Z等)终止为止。
(D) GeeksQuiz将只打印一次。因为在main()内部使用main()时,编译器会在运行时将其忽略。这是为了确保main()仅被调用一次。
(E) GeeksQuiz将被打印,直到该程序的堆栈溢出发生为止。答案: (E)
说明:首先,main()调用main()没有任何限制,即main()也可以进行递归。但是,此递归没有在这里提到明确的终止条件。因此,main()在打印GeeksQuiz之后将调用main()。这将一直进行到程序堆栈完全填满为止。请注意,堆栈(在正在运行的程序内部)存储调用函数的序列,即哪个函数调用了哪个函数,以便在被调用函数返回时可以返回控件。这就是为什么在程序中,main()将继续调用main(),直到整个堆栈结束,即发生堆栈溢出。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。