繁体   English   中英

为什么下面的递归主 function 以值 1 作为参数开始?

[英]Why does the below recursive main function start with the value 1 as parameter?

因此,当我在 gcc 中执行以下代码时:

int main (int n)
{
   if (n==5) return 0;
   else
   {
      printf ("%d ",n);
      main (n+1);
   }
}

它产生 output 1 2 3 4而不是(我不合理地期望的) 0 1 2 3 4或不同的东西,因为n没有在任何地方初始化。 编译器如何确定n是否为 1?

默认情况下,主 function 的第一个参数是 arguments 的编号,其中一个始终是程序的名称。 因此,当您执行程序时,n(等于 argc)等于 1,如下所示:

int main(int argc, char **argv) {
    /* do something here */
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM