找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1297|回复: 14
打印 上一主题 下一主题
收起左侧

C语言中return语句的用法疑惑

[复制链接]
跳转到指定楼层
楼主
ID:997026 发表于 2023-5-8 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,

虽然在实际编程中也经常用到return这个关键字,但是一般就是放在函数最后,返回一个最终值。
对return的用法仅限于此,但是听说return还有其他用法,比如可以结束函数的执行,这个我就不是特别清楚了。

比如有如下的程序函数:

unsigned char  get_final_value(void)
{
      if(data0>=5)  return data0; //------1
      if(data1<=9)  return data1; //-------2

     if(data2 >1 && data3 <8) //------3
     {
          if(adc1== sample_value) return sample_value; //------4
          esle if(adc1 < sample_value)  get_adc_value0=sample_value; //------5
          esle if(adc1 > sample_value)  get_adc_value1=sample_value;   //------6     
     }

     return  get_adc_value0; //----------7
}


这里我有几个点不太理解,如果上面代码里,第1步中如果data0>=5这个条件满足,那么会返回data0,那么程序还会往下执行吗?
也就是后面的2~7步还会执行吗?是不是就退出程序了?

比如第4步中,如果返回了sample_value,是不是后面的5~7步也不会执行了,程序就退出了?

感谢大家指教!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1073299 发表于 2023-5-8 12:37 | 只看该作者
什么时候return ,就什么时候结束了,后面的就不会执行了
回复

使用道具 举报

板凳
ID:883242 发表于 2023-5-8 12:39 | 只看该作者
return就是返回,怎么可能执行下面的语句?
回复

使用道具 举报

地板
ID:1073856 发表于 2023-5-8 13:47 | 只看该作者
在这个函数中,如果条件满足,例如 data0>=5,return data0 会立即结束函数并返回 data0 值。这意味着后续的代码不会被执行,包括2-7步。  同样地,如果在第4步中,条件 adc1== sample_value 满足,return sample_value 将结束函数并返回 sample_value 值,后续代码不会被执行。如果条件不满足,执行下一条条件语句,即第5步或第6步中的一个。如果这些条件也不满足,将执行最后一条 return get_adc_value0 并返回 get_adc_value0 值。  需要注意的是,这个函数返回一个 unsigned char 值。如果在函数的某个地方没有返回语句,编译器可能会生成一个警告或错误。因此,在这种情况下,当满足特定条件时,使用 return 语句来明确指示函数结束并返回一个值非常重要。
回复

使用道具 举报

5#
ID:879348 发表于 2023-5-8 14:12 | 只看该作者
return就是立即返回,不管在哪里
回复

使用道具 举报

6#
ID:584814 发表于 2023-5-9 10:00 | 只看该作者
return就是返回,如果后面带个跟班的就带着一起走。
返回的意思就是结束本函数的运行回到上一级调用的后一句。
回复

使用道具 举报

7#
ID:1034262 发表于 2023-5-9 10:25 | 只看该作者
函数中,一旦执行return就会返回,不会再执行别的代码。
回复

使用道具 举报

8#
ID:337139 发表于 2023-5-9 11:40 | 只看该作者
return的理解就是返回,返回到调入本涵数的入口处。自然就不会再执行涵数中的下面的代码了。
回复

使用道具 举报

9#
ID:883242 发表于 2023-5-9 11:58 | 只看该作者
放在最后是机械教条主义。
回复

使用道具 举报

10#
ID:236035 发表于 2023-5-10 13:40 | 只看该作者
return = goto END
回复

使用道具 举报

11#
ID:291668 发表于 2023-5-10 14:00 | 只看该作者
讨论热烈。return=返回入口处! 后面的判断都是徒劳的。
回复

使用道具 举报

12#
ID:1043290 发表于 2023-5-10 15:32 | 只看该作者
当前条件为真,遇到break;return;都是跳出当前循环执行下一次程序循环。
回复

使用道具 举报

13#
ID:883242 发表于 2023-5-10 15:40 | 只看该作者
huxiaolin 发表于 2023-5-10 15:32
当前条件为真,遇到break;return;都是跳出当前循环执行下一次程序循环。

c语言跳出本次循环执行下一次是continue;,真不知道你的c语言是跟谁学的。
回复

使用道具 举报

14#
ID:1043290 发表于 2023-5-10 16:39 | 只看该作者
Hephaestus 发表于 2023-5-10 15:40
c语言跳出本次循环执行下一次是continue;,真不知道你的c语言是跟谁学的。

裸机。。。
回复

使用道具 举报

15#
ID:883242 发表于 2023-5-10 18:33 | 只看该作者

跟裸机有什么关系,break是执行循环外的第一行语句,return是返回调用函数的函数,continue是不执行循环里面下面的语句,从循环开头重新执行。这都是c语言最基本的常识。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表