【发布时间】:2014-10-24 03:02:21
【问题描述】:
我有一个这样的程序。
#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
谁能解释一下输出是怎么来的?每次迭代返回什么 main(++i)。 如果我删除 printf 函数中的 \n ,它也会产生输出 5111。 提前致谢。
【问题讨论】:
-
@Jayesh 调用
main在 C 中是合法的。但main不带一个int参数。 -
int main(i)不是有效的函数声明。 -
i will start from value 1 i think不会。main()应该是int main(int argc, char **argv)并且系统会这样调用它,你不能随心所欲。有些编译器甚至不接受这个。 -
另外,您的
printf()正在打印 main() 的返回值,但是,您的函数main()不返回任何内容。这些数字是内存垃圾,未定义的行为。 -
为什么初学者对非常糟糕代码的工作原理如此感兴趣,而不是学习如何编程?