標題: C語言中return語句的用法疑惑 [打印本頁]

作者: hxdby    時間: 2023-5-8 11:33
標題: C語言中return語句的用法疑惑
大家好,

雖然在實際編程中也經(jīng)常用到return這個關鍵字,但是一般就是放在函數(shù)最后,返回一個最終值。
對return的用法僅限于此,但是聽說return還有其他用法,比如可以結(jié)束函數(shù)的執(zhí)行,這個我就不是特別清楚了。

比如有如下的程序函數(shù):

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,那么程序還會往下執(zhí)行嗎?
也就是后面的2~7步還會執(zhí)行嗎?是不是就退出程序了?

比如第4步中,如果返回了sample_value,是不是后面的5~7步也不會執(zhí)行了,程序就退出了?

感謝大家指教!

作者: wydev    時間: 2023-5-8 12:37
什么時候return ,就什么時候結(jié)束了,后面的就不會執(zhí)行了
作者: Hephaestus    時間: 2023-5-8 12:39
return就是返回,怎么可能執(zhí)行下面的語句?
作者: jinjin999    時間: 2023-5-8 13:47
在這個函數(shù)中,如果條件滿足,例如 data0>=5,return data0 會立即結(jié)束函數(shù)并返回 data0 值。這意味著后續(xù)的代碼不會被執(zhí)行,包括2-7步。  同樣地,如果在第4步中,條件 adc1== sample_value 滿足,return sample_value 將結(jié)束函數(shù)并返回 sample_value 值,后續(xù)代碼不會被執(zhí)行。如果條件不滿足,執(zhí)行下一條條件語句,即第5步或第6步中的一個。如果這些條件也不滿足,將執(zhí)行最后一條 return get_adc_value0 并返回 get_adc_value0 值。  需要注意的是,這個函數(shù)返回一個 unsigned char 值。如果在函數(shù)的某個地方?jīng)]有返回語句,編譯器可能會生成一個警告或錯誤。因此,在這種情況下,當滿足特定條件時,使用 return 語句來明確指示函數(shù)結(jié)束并返回一個值非常重要。
作者: wufa1986    時間: 2023-5-8 14:12
return就是立即返回,不管在哪里
作者: man1234567    時間: 2023-5-9 10:00
return就是返回,如果后面帶個跟班的就帶著一起走。
返回的意思就是結(jié)束本函數(shù)的運行回到上一級調(diào)用的后一句。
作者: coody_sz    時間: 2023-5-9 10:25
函數(shù)中,一旦執(zhí)行return就會返回,不會再執(zhí)行別的代碼。
作者: 長風007    時間: 2023-5-9 11:40
return的理解就是返回,返回到調(diào)入本涵數(shù)的入口處。自然就不會再執(zhí)行涵數(shù)中的下面的代碼了。
作者: Hephaestus    時間: 2023-5-9 11:58
放在最后是機械教條主義。
作者: ly1972001    時間: 2023-5-10 13:40
return = goto END
作者: li64331218    時間: 2023-5-10 14:00
討論熱烈。return=返回入口處! 后面的判斷都是徒勞的。
作者: huxiaolin    時間: 2023-5-10 15:32
當前條件為真,遇到break;return;都是跳出當前循環(huán)執(zhí)行下一次程序循環(huán)。
作者: Hephaestus    時間: 2023-5-10 15:40
huxiaolin 發(fā)表于 2023-5-10 15:32
當前條件為真,遇到break;return;都是跳出當前循環(huán)執(zhí)行下一次程序循環(huán)。

c語言跳出本次循環(huán)執(zhí)行下一次是continue;,真不知道你的c語言是跟誰學的。
作者: huxiaolin    時間: 2023-5-10 16:39
Hephaestus 發(fā)表于 2023-5-10 15:40
c語言跳出本次循環(huán)執(zhí)行下一次是continue;,真不知道你的c語言是跟誰學的。

裸機。。。
作者: Hephaestus    時間: 2023-5-10 18:33
huxiaolin 發(fā)表于 2023-5-10 16:39
裸機。。。

跟裸機有什么關系,break是執(zhí)行循環(huán)外的第一行語句,return是返回調(diào)用函數(shù)的函數(shù),continue是不執(zhí)行循環(huán)里面下面的語句,從循環(huán)開頭重新執(zhí)行。這都是c語言最基本的常識。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1