-9 c program-entry-point return
我有这样的程序.
?#include<stdio.h>
#include<stdlib.h>
int main(int i) { /* i will start from value 1 */
if(i<10)
printf("\n%d",main(++i)); /* printing the values until i becomes 9 */
}
output :
5
2
2
2
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释输出是怎么来的?每次迭代都返回main(++ i).如果我删除printf函数中的\n,它也会产生输出5111.提前致谢.
首先,宣言main()应该是int main(int argc, char **argv).你无法修改它.即使您的代码编译,系统也会调用main()它应该被调用的方式,第一个参数是程序的参数数量(如果没有给出参数,则为1).无法保证它始终为1.如果使用其他参数运行程序,此数字将会增加.
其次,你printf()试图打印返回值main(++i),然而,main()根本就不返回任何东西.如果您希望在此处看到任何一致性,则必须为函数提供返回值.
最后,你不应该调用你自己的程序的入口点,更不用说用它来递归了.为这些东西创建一个单独的函数.