c - 当函数没有显式返回值时会发生什么?无法弄清楚代码的输出是如何来的
问题描述
我在一个测试系列中遇到了一个问题,当我根据我对 C 编程的知识手动解决该问题时,应该给出一个与给出的任何选项都不匹配的输出。
我的输出='++++'
问题:以下c程序的输出是?
#include <stdio.h>
int f(int x)
{
if(x==2){ return 2; }
else{ printf("+"); f(x-1); }
}
int main()
{
int n = f(6);
printf("%d",n);
return 0;
}
选项:
- '++++2'(正确选项acc to answer key)
- '+++++2'
- '+++++'
- '2'
我的逻辑:因为最后 f(6) 没有显式返回任何内容[只有 f(2) 将值 2 返回到 f(3)],因此输出应该只包含 4 次“+”,因为每次调用 f (6)、f(5)、f(4) 和 f(3)。
下面是我在在线 c 编译器上尝试过的一些测试代码和它们的输出截图——“codechef”和“onlinegdb”——但我也无法理解它们的输出。请帮忙!
编解码器
在线gdb 1
在线gdb 2
解决方案
推荐阅读
- python-3.x - 当另一个日期时间列更改日期时,如何创建一个标记列?
- c# - 文件输入不会将文件上传到 MVC 操作
- c# - 使用时使用表单进行身份验证
在 ASP.NET 中 - jwt - 无法创建令牌:不推荐从字符串隐式转换键。请使用 InMemory 或 LocalFileReference 类
- java - 线程“AWT-EventQueue-0”中的 java 错误异常 java.lang.NullPointerException
- reactjs - 渲染道具
- ios - Xcode 是否可以仅为给定的接收到的 IPA 文件创建 UITest 项目?
- javascript - 关于gojs,设置part的desiredSize属性
- sql - 在 Oracle denodo 中用空值替换特定日期
- java - 如何从 Java 编辑 Azure 应用注册