#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/