我在主函数中尝试了递归,但是为什么'i'变量没有得到更新,它只会更新到i = 1为止,然后保持不变。下面是代码:
int main(int i = 0)
{
std::cout << "i value" << i << std::endl;
if (i == 3)
return 0;
std::cout << "hello" << std::endl;
main(i++);
}
参见例如cppreference / main_function:
主要功能具有几个特殊属性:
不能在程序中的任何地方使用
a)特别是,它不能递归调用
b)不能使用其地址
[...]
您不能main
递归调用。另外,您的签名不正确。正确的签名是:
int main () { body } (1)
int main (int argc, char *argv[]) { body } (2)
/* another implementation-defined form, with int as return type */ (3)
对于(3),您需要检查您的实现,但我不知道允许int main(int)
哪个实现(尽管我没有费心检查)。
最后但并非最不重要的一点,foo(i++);
将增加i
,然后foo
使用的原始值进行调用i
。您可能想要foo(++i);
或宁愿foo(i + 1);
。
TL; DR
int my_main(int i=0) {
// put code here
my_main(i + 1);
}
int main() {
my_main();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句