C函数输出

标签 c

谁能告诉我下面程序输出 0 1 2 0 的原因?

#include <stdio.h>

main() {

    e(3);

}

void e(int n) {

    if(n>0) {
        e(--n);
        printf("%d",n);
        e(--n);
    }

}

输出为 0 1 2 0

最佳答案

这是从 main 调用 e(3) 之后的执行流程。

e(3)
   e(2) 
      e(1) 
         e(0) ... return
         n is now 0
         print n. results in output 0
         e(-1) ... return
      n is now 1
      print n. results in output 1
      e(0) ... return
   n is now 2
   print n. results in output 2
   e(1) 
      e(0) ... return
      n is now 0
      print n. results in output 0
      e(-1) ... return
   return

然后你看到了输出

0 1 2 0

关于C函数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216404/

相关文章:

c - 如何从用户输入将多个字符串写入文件?

c - 在 C 中为结构指针赋值时遇到问题?

Java 丢弃了一半的 UDP 数据包

c - Opengl 330 核心创建和使用纹理 2D

C壳: kill process syntax

c - 这是在 c 中将整数转换为 char 数组的好方法吗?

c - 如何获取进程的pid?

C - 某处段错误

c - 如何使这段代码形成的金字塔(CS50马里奥程序)右对齐?

c - 为什么预处理器宏会忽略括号中的语句