成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

c語言中goto語句的含義是什么

在c語言中,goto語句被稱為無條件轉移語句,允許把控制無條件轉移到同一函數內的被標記的語句;語法“goto label;…label: statement;”,其中label可以是任何除C關鍵字以外的純文本,它可以設置在C程序中goto語句的前面或者后面。

c語言中goto語句的含義是什么

本教程操作環境:windows7系統、c99版本、Dell G3電腦。

c語言 goto語句

goto語句,在C中又被稱為無條件轉移語句,說是無條件,其實還是有條件的,跳轉范圍還是有限制的,允許把控制無條件轉移到同一函數內的被標記的語句。

語法

C 語言中 goto 語句的語法:

goto label; .. . label: statement;
登錄后復制

在這里,label 可以是任何除 C 關鍵字以外的純文本,它可以設置在 C 程序中 goto 語句的前面或者后面。

c語言中goto語句的含義是什么

流程圖

c語言中goto語句的含義是什么

用法

首先,我們要確定好我們要轉移去的地方,也就是轉移終點,需要我們去設置一個標識符,也就是label(我沒有在秀英語,當goto語句出錯的時候,報錯內容很有可能會出現這個單詞),同時,我們要在label后面加一個冒號(:),就這樣,我們設置好了標識符,接下來我們設置起點——goto 標識符;。首先我們要告訴計算機,我們要跳了,就是goto的作用,接著我們要告訴他我們要跳去哪里,也就是我們剛剛設置好的標識符,最后像是其他語句一樣,我們給它加上分號(;),意味著語句結束。下面是編輯器頁面的樣子。

c語言中goto語句的含義是什么

以及運行結果

c語言中goto語句的含義是什么

可見,我們第5行printf沒有執行,直接就來到了第7行printf。

它可以跳到后面語句,也可以跳到前面。

c語言中goto語句的含義是什么

這樣他就成了一個簡便的循環,沒有結束條件

c語言中goto語句的含義是什么

大家可以試試跑一下這段代碼,當然我們可以用計數器加if判斷,給他一個結束條件,讓他擁有for和while的能力。

可惜的是我們沒辦法跨函數運用goto,有其他語句可以實現,我們在此不再贅述。

c語言中goto語句的含義是什么

在這里,如果if條件成立,我們在將它輸出之后,望著下面長長的一串層次不齊的中括號,我知道我要在他們那里設置條件,然后一遍又一遍的break,想想就煩,這時候不用goto更待何時?很快啊!我們直接一個goto,跳到了

c語言中goto語句的含義是什么

去進行我們下一階段的程序。

但是不知你是否注意到,我們在上一張圖片中,用了兩個goto,卻讓他們指到了同一個label,是的,我們可以在不同的起點去讓程序跳轉到同一個終點,但是要注意的是我們不可以在同一個goto下跳到兩個label,這很容易理解,換做是你,收到命令,叫你去兩個甚至多個不同的地方,你也會懵逼,我到底該去哪。

另一個與之前不同的地方就是,我在標識符xiayige:的后面加上了一個分號(;),這是為什么?標識符的后面要跟一條語句才行,可以是賦值可以是聲明,但是如果實在沒有辦法在他后面加語句,我們可以加一個分號,當作空語句,來讓這個標識符運行起來。

Ps:其實可以在這里聲明一個垃圾變量,或者別的什么無意義的語句,但會使代碼變得不易懂,并不建議這么去做。

這是大家用goto做的最多的事,至于有什么其他的用法,那就要看你的想象力了,老話說得好,人有多大膽,地有多大產。

以下是我用到goto的時候。

#include<stdio.h> int main () {     printf("請輸入要計算的算式,四則運算優先級一樣高,從左到右依次計算n");     int jieguo=0,sz,gongju=0,gongju2=1;     char ysf;     scanf("%d",&jieguo);     if (jieguo==0) //直接輸入等號的話%d似乎是0,有待商榷!!!!!!!! //二次修改,if語句中判斷量時只有0為假,除此之外的數字都表真     {     printf("**,你算**呢n");     goto chaojijieshu;     gongju=1;     gongju2=0;     }     else if (gongju2)          {     printf("請輸入運算符n");          scanf(" %c",&ysf);     //enter包含兩個命令,算是兩個字符r和n,后面的一個會占據scanf的輸入位,所以要清空,或者用空格占位     if(ysf=='=')     printf("**,你算**呢n");     } loop:     while(ysf!='=')     {         if (ysf=='-')         {             printf("請輸入數字n");             scanf("%d",&sz);             jieguo-=sz;             printf("請輸入運算符n");             fflush(stdin);//清空標準輸入流(stdin) fflush是stdio.h中的函數             scanf("%c",&ysf);             if(ysf=='=')             {                 goto jieshu;             }             else             {                 goto loop;             }         }         else if (ysf=='+')         {             printf("請輸入數字n");             scanf("%d",&sz);             jieguo+=sz;             printf("請輸入運算符n");             fflush(stdin);//清空標準輸入流(stdin) fflush是stdio.h中的函數             scanf("%c",&ysf);             if(ysf=='=')             {                 goto jieshu;             }             else             {                 goto loop;             }         }         else if(ysf=='*')         {             printf("請輸入數字n");             scanf("%d",&sz);             jieguo*=sz;             printf("請輸入運算符n");             fflush(stdin);//清空標準輸入流(stdin) fflush是stdio.h中的函數             scanf("%c",&ysf);             if(ysf=='=')             {                 goto jieshu;             }             else             {                 goto loop;             }        }         else if(ysf=='/')         {             printf("請輸入數字n");             scanf("%d",&sz);             while(sz==0)             {                 printf("0能做分母嗎?你算**呢n");             }             jieguo/=sz;             printf("請輸入運算符n");             fflush(stdin);//清空標準輸入流(stdin) fflush是stdio.h中的函數             scanf("%c",&ysf);             if(ysf=='=')             {                 goto jieshu;             }             else             {                 goto loop;             }         }     } jieshu:     printf("結果是%dn",jieguo); chaojijieshu:     if (gongju)     printf("真無語,重開吧n");     return 0;      } //注意注意!!!!!!!!!!!! //enter算是兩個命令,所以有兩個字符,在進行上一次輸入之后 //在來一個enter,會占據scanf的字符位 //所以要清空標準輸入流 //可以利用下述語句 //fflush(stdin); //清空標準輸入流(stdin) fflush是stdio.h中的函數 //以上是最好的解決辦法 //初次之外,還有被稱作偏方的辦法 //二次修改 除此之外,而不是初次之外,打錯字了 //如 //scanf(“ %c”,&ysf”) //在scanf中加一個空格,可以頂掉enter多出來的一個字符 //還有 //加一句 //getchar() //用getchar來捕捉多出來的n
登錄后復制

說明

在任何編程語言中,都不建議使用 goto 語句。因為它使得程序的控制流難以跟蹤,使程序難以理解和難以修改。任何使用 goto 語句的程序可以改寫成不需要使用 goto 語句的寫法。

不推薦使用goto語句的原因:

①由于goto語句是無條件跳轉指令,使用goto語句后回使得程序結構變得更加復雜,不利于以后代碼維護,特別是需要交交接給被人維護的時候。

②由于目前編程采用的都是結構化編程,方便移植,而當采用goto語句后就會導致在結構化編程的項目中代碼不便移植,因為如果使用goto從一個結構中跳轉到另一個結構,而使得結構之間有了聯系,不便移植。

③由于目前C語言等高級語言具有break、continue等語法,可以很好地代替goto,所以能不使用goto就不使用goto。

推薦使用goto的場景:

①從多重循環中直接跳出。

②出錯時清除資源。

③可增加程序清晰度的情況。

使用goto函數的原則:

①使用goto語句只能goto到同一函數內,而不能從一個函數里goto到另外一個函數里。

②使用goto語句在同一函數內進行goto時,goto的起點應是函數內一段小功能的結束處,goto的目的label處應是函數內另外一段小功能的開始處,不能破壞功能的實現。

③不能從一段復雜的執行狀態中的位置goto到另外一個位置,比如,從多重嵌套的循環判斷中跳出去就是不允許的。 

④應該避免向兩個方向跳轉。這樣最容易導致"面條代碼",即邏輯混亂。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久久久无码精品国产H动漫| 久久99精品久久久久久9蜜桃| 国产午夜福利精品久久| 精品第一国产综合精品AⅤ| 久久久97精品国产一区蜜桃| 乱中年女人伦AV三区| 奶头被几个流浪汉吃肿了| 取一个独一无二的网名| 色爱无码AⅤ综合区| 天堂资源在线官网| 亚洲白嫩学生AV无码一区| 亚洲无人区码一码二码三码四码| 野外妓女脱裤子让老头玩| 99RE免费99RE在线视频| 大量潮喷潮喷极限高H| 国产精品原创巨作AV女教师| 精品一区二区三区在线成人| 男女啪啪免费观看的网址| 日本三级韩国三级欧美三级| 午夜精品四季AV日日骚 | 一面亲上边一面膜下边文字的含义 | 亚洲丰满熟妇在线播放电影全集| 淫荡集团69视频在线观看| Z〇Z〇ZO女人另类Z〇Z○| 国产精品自产拍在线18禁| 久久久久亚洲AV无码专区首| 亲孑伦视频一区二区三区一| 无套内射无矿码免费看黄| 亚洲午夜成人精品无码| 被CAO的奶水直喷高H| 国产偷国产偷亚洲高清人| 旅游途中夫妻换着玩的说说搞笑| 日本AⅤ精品一区二区三区久久 | 韩国全部三级伦在线播放| 免费观看的AV毛片的网站| 熟妇的奶头又大又粗视频| 亚洲熟妇一区二区| 波多野结衣好大好紧好爽| 韩国精品福利一区二区三区| 欧美成人A猛片在线观看| 无码AⅤ最新AV无码专区 | 亚洲AV女人18毛片水真多| 18成禁人视频免费网站| 国产高清在线精品一本大道| 久久夜色精品国产噜噜亚洲SV| 色噜噜AV亚洲色一区二区| 亚洲中文AⅤ中文字幕在线| XXX激情影院亚洲AV| 极品美女扒开粉嫩小泬的视频| 欧美黑人XXXXXⅩ| 亚洲AV秘 无码一区二区三l| JIZZJIZZ日本人妻| 极品人妻系列人妻30P| 日本中文字幕一区二区有码在线| 亚洲精品无码久久毛片波多野吉衣 | 亚洲AV永久无码精品三区在线| HD专干中国老太婆| 饥渴的少妇2中文字幕| 日产乱码一二三区别免费下| 野花日本韩国视频免费高清观看| 公交车上噗嗤一声尽根而没| 狂野欧美激情性XXXX| 无码人妻视频一区二区三区| 99久无码中文字幕一本久道| 国产午夜影视大全免费观看| 人妻少妇中文字幕乱码| 亚洲熟妇丰满色XXXXX欧美| 国产AV日韩AⅤ亚洲AV无码馆| 邻居一晚让我高潮3次正常吗 | ZZIIZZII亚洲日本少妇| 久久WWW成人_看片| 我偷偷跟亲妺作爱H| 99精品视频一区在线观看| 娇妻被交换粗又大又硬视频| 色窝窝AV资源网| 337P日本欧洲亚洲大胆精筑| 狠狠做深爱婷婷久久综合一区| 色妞WWW精品视频| 97久久人人超碰国产精品| 精品久久综合1区2区3区激情| 少妇兽交PWWW综合网| 18无码粉嫩小泬无套在线观看| 黑人巨大猛烈捣出白浆视频在线| 日韩欧群交P片内射中文| 最新的国产成人精品2022| 精品国产午夜福利在线观看| 透过校服的乳尖 揉捏| ZOMBIE视频SUPREME| 免费A级毛片18禁| 亚洲色欲色欲欲WWW在线| 国产乱子伦高清露脸对白| 日日噜噜夜夜狠狠久久无码区| 18禁无遮挡无码网站免费| 久久精品成人无码观看不卡| 性欧美VIDEOS武则天| 对白脏话肉麻粗话AⅤ| 欧美极品性饥渴少妇大战黑人| 一边亲着一面膜下奶韩剧| 黑人入室强丰满人妻| 无码人妻精品中文字幕| 公交车伦流澡到高潮HNP| 日本妇人成熟免费中文字幕| 91久人人做人人妻人人玩精品| 久久久久99精品成人片三人毛片| 亚洲AV无码成人精品区在线h| 各种少妇正面着BBW撒尿视频| 人人爽人人片人人片AV| 97久久精品人人澡人人爽| 噜噜噜噜噜18禁私人影视| 亚洲色精品三区二区一区| 国内精品伊人久久久久777| 五十路○の豊満な肉体| 国产成人综合色视频精品| 少妇邻居内射在线| 顶级大但人文艺术中的绘画作品| 人妻无码一区二区三区视频| 99久久久国产精品免费| 牛鞭进入女人下身的视频| 111111少妇影院| 男人J放进女人J无遮挡免费看 | 野花影视视频在线观看免费| 久久大香伊蕉在人线免费AV| 亚洲精品无码MV在线观看网站| 黑人上司粗大拔不出来| 亚洲成A人V在线蜜臀| 黑人巨根后入娇小女孩| 亚洲AV最新在线网址| 妓女妓女影院妓女影库妓女网| 亚洲成在人线AⅤ中文字幕| 国产重口老太和两个小伙另类| 亚洲 欧美 卡通 另类 小说| 国产精品原创巨作AV女教师 | 日韩AV无码午夜免费福利制服 | OLDVIDEO高潮日本熟妇| 人妻丰满熟妇av无码久久洗澡| YW尤物无码点击进入| 人妻少妇乱孑伦无码专区蜜柚| 菠萝蜜视频在线观看入口| 日日噜噜噜夜夜爽爽狠狠视频| 国产成人A码男人的天堂| 无码精品一区二区三区视频色欲网| 国产精品内射后入合集| 性 偷窥 间谍 tube| 精品国产AⅤ无码一区二区| 亚洲熟女一区二区三区| 浪货趴办公桌~H揉| 99久热RE在线精品99 6热| 日本中文字幕一区二区有码在线| 公交车上拨开少妇内裤进入| 午夜福利AV无码一区二区| 极品粉嫩小泬50P| 又大又粗欧美成人网站| 欧美人妻精品一区二区| 大地韩国日本HD免费完整| 无码人妻精品一区二区三| 好爽…又高潮了毛片免费看| 阳茎伸入女人的阳道免费视频 | 99国产精品自在自在久久| 日本精产国品一二三产品区别| 国产AV一区二区精品凹凸| 无码人妻精品一区二| 精品无码国产自产拍在线观看蜜 | 国色天香一卡2卡3卡4卡| 野花社区免费观看高清在线1日本| 末发育娇小性色XXXXX| 波多野结衣亚洲AV手机在线| 无码人妻AⅤ一区 二区 三区| 狠狠综合久久综合88亚洲| 中文字幕精品无码一区二区三区| 人妻有码中文字幕在线| 国产精品污WWW一区二区三区| 亚洲欧美一区二区三区在线| 女色窝人体色777777九色| 隔壁老王国产在线精品| 亚洲精品国自产拍在线观看| 内射老阿姨1区2区3区4区| 成人作爱Av一级无码| 亚洲AV无码一区二区三区DV| 美女GIF趴跪式抽搐动态图| 波多野结衣AV一区二区全免费观看| 无码人妻精品一区二区三区蜜桃| 久久精品国产99久久久古代| FREE性玩弄少妇HD| 无人区码卡二卡乱码字幕| 久久亚洲精品无码AV红樱桃| 成人精品视频一区二区三区不卡| 亚洲AV无码成人精品区在线观看| 蜜臀久久99精品久久久久久小说| 东北妇女精品BBWBBW| 亚洲国产精品无码久久| 欧美XXXX做受欧美.88| 国产精品免费视频网站| 中文字幕V亚洲日本在线| 天天爽夜夜爽夜夜爽| 老师粉嫩小泬喷水视频90| 丰满大爆乳波霸奶| 亚洲午夜久久久久妓女影院| 日韩系列 无码迅雷| 久久久国产精品无码免费专区| 成AV人电影在线观看|