c - 当函数包含 printf 时打印递归函数返回值

标签 c

#include <stdio.h>

int c=0;

int check (int c)
{
    c=c+1;
    if (c<6)
        return check(c);
    printf("%d\n", c);
}

int main()
{
    printf("%d\n",check(c));
}

上面的代码给了我

6
2

作为输出。 6 来自检查函数内的 printf 函数,但我不明白为什么 2. 如果我删除检查函数内的 printf 函数,我得到

5

作为输出。谁能解释为什么会这样?

最佳答案

您正在调用未定义的行为。所以它的行为很奇怪。

您必须在 check 函数中有一个正确的 return 语句,因为您应该返回一个 int

还有 printf 或没有它 - 不会改变任何东西 - 它仍然是 UB。(在这种情况下)

关于c - 当函数包含 printf 时打印递归函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46991532/

相关文章:

c - 从 PCM 中删除 channel

c - Imagemagick Magickcore 抛出断言错误

c++ - gstreamer 管道代码通过来自相机的实时流显示文本而不是图像?

无法存储 key : SYSTEM ERROR when running c program under cgi-bin

C - popen 未显示正确的输出

c - 如何计算 MB/s 和 MiB/s?

c - 如何将数据保存在已知内存位置一次以便在 x86 程序集中多次重用?

c - "Hello World"在 C 中是如何工作的

c - 卡在 connect()

c - 像 "case_GETOPT_HELP_CHAR"这样的宏有风险吗?