• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

输出结果为12,能说说为什么吗?我把两个return都删了,为什么还可以输出?

#include
int zhouchang(int a,int b,int c)
{
if ((a + b )

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

一句话总结:歪打正着而已。



你这样写肯定是不对的!
如果函数声明了有返回值,那就一定要在每一个返回分支处都return相应的返回值,否则返回的值是未定义的
这就是C标准中所谓的“未定义”行为。 返回什么都有可能。
而且这样的代码在编译时,编译器会发现在有的返回分支处你没有return返回值,会给出警告的。


至于为什么好像返回值也是正确的。 这一般与编译器的实现有关。 比如:gcc一般会用eax寄存器来返回这样的值,而这种简单的代码,gcc有可能将sum就储存在eax中,所以结果就恰好正确了。 (这也只是一种推测,具体行为是不是这样,只能看编译后的汇编代码了)

关键是:绝对不要以为这样写代码也是可以的!这样的代码就是错误的!! 只不过碰巧返回了看似正确的值。

使用道具 举报

这得看c的函数 是不是默认返回,例如js会默认返回undefined一样。要么编译通不过,要么就是默认。你可以这个思路入手。

使用道具 举报

发新帖

发布任务需求已有1031166位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!