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

go是c語言中關鍵字嗎

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

go是c語言中關鍵字嗎

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

C語言中一共有32個關鍵字:

1 2 3 4 5 6 7 8
if else switch case default break return goto
do while for continue typedef struct enum union
char short int long float double void sizeof
signed unsigned const auto register static extern volatile

可以看出go不是c語言的關鍵字,goto才是是c語言的關鍵字。

c語言 goto語句

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

語法

C 語言中 goto 語句的語法:

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

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

go是c語言中關鍵字嗎

流程圖

go是c語言中關鍵字嗎

用法

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

go是c語言中關鍵字嗎

以及運行結果

go是c語言中關鍵字嗎

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

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

go是c語言中關鍵字嗎

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

go是c語言中關鍵字嗎

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

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

go是c語言中關鍵字嗎

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

go是c語言中關鍵字嗎

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

但是不知你是否注意到,我們在上一張圖片中,用了兩個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
登錄后復制

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
一本一道久久a久久精品综合 | 久久精品黄AA片一区二区三区| 久久亚洲av无码精品浪潮| 日韩视频在线精品视频免费观看 | 日韩无码系列综合区| 在线观看精品国产福利片87| 中文字幕精品三区无码亚洲| 久久6这里只有精品| 亚洲精品在线播放| 精品无人码麻豆乱码1区2区| 欧产日产国产精品精品| 久久久久女人精品毛片九一| 亚洲AV永久青草无码精品| 国产精品国产三级国产普通话 | 精品国产乱子伦一区二区三区| 无码人妻丰满熟妇精品区| 久久精品视频99精品视频150| 九九在线精品视频专区| 久久99国产精品久久久| 日韩精品免费视频| 久久精品视频国产| 久久久国产成人精品| 无码人妻精品一区二区在线视频| 亚洲综合精品一二三区在线| 少妇人妻无码精品视频| 久久久久人妻精品一区 | 日韩精品无码专区免费播放| 亚洲日韩国产一区二区三区| 日韩精品在线观看视频| 日韩高清在线免费观看| 日韩a级片在线观看| 亚洲国产成人a精品不卡在线| 亚洲国产精品13p| 精品久久久无码中文字幕| 国内精品99亚洲免费高清| 亚洲精品无码久久久久| 奇米精品一区二区三区在线观看| 久久久久女人精品毛片九一| 久久精品中文騷妇女内射| 91精品啪在线观看国产电影| 四虎永久在线精品波多野结衣|