欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4079|回復: 17
收起左側

關于C語言GOTO語句的用法

  [復制鏈接]
ID:884042 發表于 2021-3-23 09:49 | 顯示全部樓層 |閱讀模式
我在編寫一個單片機程序的時候,遇到了一個問題:想從IF語句里退出,但不退出函數。網上說要用GOTO語句,但我不知道怎么用,請各位指導下。
  1. #include"reg52.h"
  2. sbit key1 = P1^0;
  3. void keybord()
  4. {
  5.       if(key1 ==  0)
  6.       {
  7.             //在此退出
  8.       }
  9. }
  10. void mian()
  11. {
  12.       keybord();
  13. }
復制代碼

回復

使用道具 舉報

ID:693038 發表于 2021-3-23 10:27 | 顯示全部樓層
直接用return就可以了, 用goto的話需要有要跳去的標簽位置
lable:******


if(***){
   goto lable;
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:139866 發表于 2021-3-24 09:44 | 顯示全部樓層
標志位啊,設N個標志位,用到哪個就跳哪個
回復

使用道具 舉報

ID:304608 發表于 2021-3-24 09:52 | 顯示全部樓層
你需要考慮下你代碼邏輯問題, 可能沒有規劃好, 一般是可以避免使用goto語句的
回復

使用道具 舉報

ID:207421 發表于 2021-3-24 13:20 | 顯示全部樓層
  • #include"reg52.h"
  • sbit key1 = P1^0;
  • int num;
  • bit flag;
  • void keybord()
  • {
  •       if(key1 ==  0)
  •       {
  •             GOTO RUN;// 加flag = 1;在此退出,好像也沒什么意義
  •       }
  • RUN:
  •      num++;
  •      if(2021 == num) num = 0;
  • }
  • void mian()
  • {
  •       while(1)
  •       {
  •               if(0==flag)
  •               {
  •                       keybord();
  •               }
  •       }
  • }

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:894154 發表于 2021-3-24 13:30 | 顯示全部樓層
單片機里面不用while嗎,要程序停的時候就停在睡眠模式,退出if后在if語句后面跟你要實現的代碼就行了 ,用不著goto啊

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:158375 發表于 2021-3-25 08:37 | 顯示全部樓層
可以用return退出的。
當自己的C語言水平不夠時,最好避免用GOTO。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:592807 發表于 2021-3-25 08:58 | 顯示全部樓層
笨笨兔 發表于 2021-3-25 08:37
可以用return退出的。
當自己的C語言水平不夠時,最好避免用GOTO。

我也建議用return。另外用if.....else if.....else 結構,將所有情況包含起來,進入if之后里面代碼執行完不就直接到最后一步退出了嗎。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:723547 發表于 2021-3-26 17:27 | 顯示全部樓層
key1=1;
把這個語句加進去就可以了
return會造成后面的語句不執行

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:47286 發表于 2021-3-26 23:45 | 顯示全部樓層
我不是答題的 只是搭車問一下 goto哪不好啊 從開始學的時候 書上就說盡量不用goto 然后 我就沒用過 但書上也沒說明白哪不好 后來看到的地方也都是一句不好 或者盡量不用就完了 有哪位有閑工夫的給講講為什么嗎

我頂多理解到有很多邏輯的時候如果用goto愣跳會有麻煩 比如一些標記沒清零或者變量沒清零什么的 其它也沒覺得goto哪不好

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:592807 發表于 2021-3-27 17:39 | 顯示全部樓層
dzbj 發表于 2021-3-26 23:45
我不是答題的 只是搭車問一下 goto哪不好啊 從開始學的時候 書上就說盡量不用goto 然后 我就沒用過 但書上 ...

因為GOTO語句跳轉的位置是隨意的,可以往后跳也可以往前跳。往后跳的話會容易出現你說的一些標志位沒處理或者某些功能沒關閉的情況。但是如果往前跳的話,就可能會出現重復定義,重復賦值,自己構成無限循環之類的問題。另外有多個GOTO語句的話程序就會想蜘蛛網一樣,亂連一通,降低代碼的可讀性,修改代碼也會出現很多麻煩。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:160500 發表于 2021-3-27 18:10 | 顯示全部樓層
看了這個程序,在這里使用GOTO沒有什么意義。直接取消就可以了。因為在這個IF里goto后面的代碼完全是無用的代碼
回復

使用道具 舉報

ID:897478 發表于 2021-3-27 22:35 | 顯示全部樓層
用return就行
回復

使用道具 舉報

ID:47286 發表于 2021-3-27 23:11 | 顯示全部樓層
黃youhui 發表于 2021-3-27 17:39
因為GOTO語句跳轉的位置是隨意的,可以往后跳也可以往前跳。往后跳的話會容易出現你說的一些標志位沒處理 ...

感謝你的回復 你說的有道理 我因為沒用過又有點好奇 才有此問
回復

使用道具 舉報

ID:895684 發表于 2021-3-28 15:41 | 顯示全部樓層
go  to語句比較直接簡單,就是直接從一個地方到你想去的地方,適合自己寫程序使用,別人看很容易亂

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:435676 發表于 2021-3-28 16:21 | 顯示全部樓層
含義,goto語句也稱為無條件轉移語句;goto語句的語義是改變程序流向, 轉去執行語句標號所標識的語句;goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成循環,跳出循環體等功能。寫法樓上已經有人給例子了。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:898654 發表于 2021-3-30 17:37 | 顯示全部樓層
goto很厲害的語句,可以跳到你想要的位置。 前提是你得有一個標簽,標簽放到語句前,然后用goto 標簽,就可以跳過去了
回復

使用道具 舉報

ID:884042 發表于 2021-3-30 19:13 | 顯示全部樓層
1051798957 發表于 2021-3-28 16:21
含義,goto語句也稱為無條件轉移語句;goto語句的語義是改變程序流向, 轉去執行語句標號所標識的語句;got ...

謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表