You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++编译报no return statement in function returning non void问题咨询

问题解答

错误成因

C++语法有明确规定:如果函数声明时指定的返回值类型不是void,则该函数所有可能的执行路径结束时,都必须通过return语句返回对应类型的有效值,否则就会触发你遇到的no return statement in function returning non void [-Wreturn-type]报错。
你代码里两个对应报错位置的问题分别是:

  • 第40行对应int Task(int balance, int balance2, int option)函数:你声明了返回值为int类型,但整个函数执行完switch分支逻辑后,没有任何return语句返回int值。
  • 第64行对应int main1()函数:你声明了返回值为int类型,函数执行完循环逻辑后也没有return语句返回int值,另外C++规定程序的唯一合法入口是int main(),你写的main1无法作为入口被系统识别,属于额外的逻辑错误。

修复方案

  1. 处理Task函数的返回值问题:
    如果你不需要Task返回任何执行结果,直接把函数声明的返回值类型从int改为void即可,修改后不需要补充return语句。
    如果你需要把修改后的账户余额返回给调用方,就在Task函数的末尾添加return balance;,同时在main函数调用Task时接收返回值更新本地存储的余额变量(你当前按值传参的写法修改的只是Task内的形参,不会影响外部的余额值,属于隐藏逻辑bug)。
  2. 处理主函数问题:
    把int main1()改为标准入口函数int main(),并在函数最后一行添加return 0;表示程序正常执行结束。
  3. 其他可修复的逻辑问题(避免编译通过后运行异常):
  • 你代码里的Account1、Account2是未初始化的int变量,判断x == Account1的逻辑完全不生效,可以改为判断输入的x是字符'1'还是'2'来选择对应账户。
  • Task函数内的cin >> option;会覆盖你从main传入的option值,属于多余逻辑,可以直接删除。
  • 你当前调用Task时传入的是固定常量500、700,每次调用都会重置余额,建议在main内定义变量存储两个账户的余额,每次调用Task后更新对应变量的值。

内容的提问来源于stack exchange,提问作者KarmaBoiii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:27:01