c - 有人可以解释这个 C 程序的输出吗?
问题描述
#include <stdio.h>
int main()
{
static int i = 5;
if (--i)
{
main();
printf("%d\n", i); // will this line executes ?
}
return 0;
}
输出:
0
0
0
0
是否在 main() 下编写代码;每次当主递归调用发生并从该程序终止时执行时,printf 语句指令都会被放入堆栈?
解决方案
i
通过连续调用 来减少,main
直到达到零。
然后 printf
为每个级别的递归调用。
(请注意,main
虽然在 C 中不明智,但从自身调用的行为是明确定义的,但在 C++ 中,行为是未定义的。)
推荐阅读
- angular - Angular Flatpickr 将最后选择的日期绑定到模型而不是当前选择的日期
- typescript - 为侦听器变量添加类型 react-native typescript
- c++ - std::find 使用用户定义的结构
- sql-server - 计算 SQL Server 中行中重复值的数量
- javascript - 如何在网页上使用 $ 符号计算 2 个值的百分比
- c++11 - 具有 is_same type_trait 的 C++ 模板函数不适用于类型 T=std::string
- excel - 当第一列中的单元格具有特定文本时,将行复制到新工作表
- spotfire - 使用 Over 与 Intersect & Previous 的 Spotfire 意外结果
- image-processing - 图像处理直方图均衡
- python - 在 Windows 中安装 PyopenNI - boost.python 问题