【发布时间】:2015-06-16 11:09:11
【问题描述】:
我发现了一些有趣的代码行:
#include <stdio.h>
int main()
{
printf("Hi there");
return main();
}
它编译正常(VS2013)并由于对main() 的递归调用而导致堆栈溢出错误。我不知道return 语句接受任何可以评估为预期返回数据类型的参数,在这个例子中甚至是int main()。
标准 C 或类似微软的行为?
【问题讨论】:
-
阅读函数。提示:
main()是一个函数。 -
这个例子让你印象深刻的是什么?这只是一个常规的递归调用。
-
@FilipeGonçalves - 也许是因为它是你能写的最简单的递归调用?
-
在大多数情况下遇到递归,这只是愚蠢的过度设计,通常是不好的做法。这个例子只会吃掉所有的堆栈,然后崩溃和烧毁。确实令人印象深刻。