找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3582|回復: 17
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語言GOTO語句的用法

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:884042 發(fā)表于 2021-3-23 09:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我在編寫一個單片機程序的時候,遇到了一個問題:想從IF語句里退出,但不退出函數(shù)。網(wǎng)上說要用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. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:693038 發(fā)表于 2021-3-23 10:27 | 只看該作者
直接用return就可以了, 用goto的話需要有要跳去的標簽位置
lable:******


if(***){
   goto lable;
}

評分

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

查看全部評分

回復

使用道具 舉報

板凳
ID:139866 發(fā)表于 2021-3-24 09:44 | 只看該作者
標志位啊,設(shè)N個標志位,用到哪個就跳哪個
回復

使用道具 舉報

地板
ID:304608 發(fā)表于 2021-3-24 09:52 | 只看該作者
你需要考慮下你代碼邏輯問題, 可能沒有規(guī)劃好, 一般是可以避免使用goto語句的
回復

使用道具 舉報

5#
ID:207421 發(fā)表于 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();
  •               }
  •       }
  • }

評分

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

查看全部評分

回復

使用道具 舉報

6#
ID:894154 發(fā)表于 2021-3-24 13:30 | 只看該作者
單片機里面不用while嗎,要程序停的時候就停在睡眠模式,退出if后在if語句后面跟你要實現(xiàn)的代碼就行了 ,用不著goto啊

評分

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

查看全部評分

回復

使用道具 舉報

7#
ID:158375 發(fā)表于 2021-3-25 08:37 | 只看該作者
可以用return退出的。
當自己的C語言水平不夠時,最好避免用GOTO。

評分

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

查看全部評分

回復

使用道具 舉報

8#
ID:592807 發(fā)表于 2021-3-25 08:58 | 只看該作者
笨笨兔 發(fā)表于 2021-3-25 08:37
可以用return退出的。
當自己的C語言水平不夠時,最好避免用GOTO。

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

評分

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

查看全部評分

回復

使用道具 舉報

9#
ID:723547 發(fā)表于 2021-3-26 17:27 | 只看該作者
key1=1;
把這個語句加進去就可以了
return會造成后面的語句不執(zhí)行

評分

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

查看全部評分

回復

使用道具 舉報

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

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

評分

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

查看全部評分

回復

使用道具 舉報

11#
ID:592807 發(fā)表于 2021-3-27 17:39 | 只看該作者
dzbj 發(fā)表于 2021-3-26 23:45
我不是答題的 只是搭車問一下 goto哪不好啊 從開始學的時候 書上就說盡量不用goto 然后 我就沒用過 但書上 ...

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

評分

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

查看全部評分

回復

使用道具 舉報

12#
ID:160500 發(fā)表于 2021-3-27 18:10 | 只看該作者
看了這個程序,在這里使用GOTO沒有什么意義。直接取消就可以了。因為在這個IF里goto后面的代碼完全是無用的代碼
回復

使用道具 舉報

13#
ID:897478 發(fā)表于 2021-3-27 22:35 | 只看該作者
用return就行
回復

使用道具 舉報

14#
ID:47286 發(fā)表于 2021-3-27 23:11 | 只看該作者
黃youhui 發(fā)表于 2021-3-27 17:39
因為GOTO語句跳轉(zhuǎn)的位置是隨意的,可以往后跳也可以往前跳。往后跳的話會容易出現(xiàn)你說的一些標志位沒處理 ...

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

使用道具 舉報

15#
ID:895684 發(fā)表于 2021-3-28 15:41 | 只看該作者
go  to語句比較直接簡單,就是直接從一個地方到你想去的地方,適合自己寫程序使用,別人看很容易亂

評分

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

查看全部評分

回復

使用道具 舉報

16#
ID:435676 發(fā)表于 2021-3-28 16:21 | 只看該作者
含義,goto語句也稱為無條件轉(zhuǎn)移語句;goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標號所標識的語句;goto語句通常與條件語句配合使用。可用來實現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。寫法樓上已經(jīng)有人給例子了。

評分

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

查看全部評分

回復

使用道具 舉報

17#
ID:898654 發(fā)表于 2021-3-30 17:37 | 只看該作者
goto很厲害的語句,可以跳到你想要的位置。 前提是你得有一個標簽,標簽放到語句前,然后用goto 標簽,就可以跳過去了
回復

使用道具 舉報

18#
ID:884042 發(fā)表于 2021-3-30 19:13 | 只看該作者
1051798957 發(fā)表于 2021-3-28 16:21
含義,goto語句也稱為無條件轉(zhuǎn)移語句;goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標號所標識的語句;got ...

謝謝!
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

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