go bukan kata kunci dalam bahasa C, goto ialah kata kunci dalam bahasa C. Pernyataan goto dipanggil pernyataan pemindahan tanpa syarat, yang membenarkan pemindahan kawalan tanpa syarat kepada pernyataan berlabel dalam fungsi yang sama ialah "label goto;...label: pernyataan;", di mana label boleh menjadi sebarang pernyataan tulen selain daripada Teks kata kunci C, yang boleh ditetapkan sebelum atau selepas pernyataan goto dalam program C.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi c99, komputer Dell G3.
Terdapat 32 kata kunci dalam bahasa C:
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 |
Dapat dilihat bahawa go bukanlah kata kunci dalam bahasa C, goto ialah kata kunci dalam bahasa C.
pernyataan goto, juga dikenali sebagai pernyataan pemindahan tanpa syarat dalam C, dikatakan tidak bersyarat, tetapi sebenarnya ia masih bersyarat . Lompat Skop pemindahan masih terhad, membenarkan pemindahan kawalan tanpa syarat kepada pernyataan bertanda dalam fungsi yang sama.
Sintaks
Sintaks pernyataan goto dalam bahasa C:
goto label; .. . label: statement;
Di sini, label boleh berupa sebarang kata kunci tulen kecuali Teks kata kunci C, yang boleh ditetapkan sebelum atau selepas pernyataan goto dalam program C.
Carta Aliran
Pertama, kita perlu tentukan Nah, di mana kita ingin memindahkan, yang merupakan titik akhir pemindahan, kita perlu menetapkan pengecam, iaitu label (saya tidak menunjukkan bahasa Inggeris. Apabila ralat berlaku dalam pernyataan goto, perkataan ini mungkin muncul dalam kandungan ralat). Pada masa yang sama, kita perlu menambah titik bertindih (:) selepas label Dengan cara ini, kita telah menetapkan pengecam, dan kemudian kita menetapkan titik permulaan - pengecam goto;. Mula-mula kita perlu memberitahu komputer bahawa kita akan melompat, yang merupakan peranan goto Kemudian kita perlu memberitahunya di mana kita mahu melompat, yang merupakan pengecam yang baru kita tetapkan, seperti pernyataan lain, kita menambah mata kepadanya (;) bermaksud akhir pernyataan. Inilah rupa halaman editor.
dan hasil yang sedang dijalankan
Ia boleh dilihat bahawa printf kami dalam baris 5 tidak dilaksanakan, dan ia pergi terus ke baris 7 printf.
Ia boleh melompat ke pernyataan seterusnya atau ke hadapan.
Dengan cara ini ia menjadi gelung mudah tanpa syarat penghujung
Anda boleh cuba menjalankan ini Sudah tentu, kami boleh menggunakan kaunter dan jika penghakiman untuk memberikannya syarat akhir, supaya ia mempunyai keupayaan untuk dan sementara.
Malangnya, kami tidak boleh menggunakan goto merentas fungsi. Terdapat kenyataan lain yang boleh dilaksanakan, jadi kami tidak akan menerangkan secara terperinci di sini.
Di sini, jika keadaan if adalah benar, selepas kita mengeluarkannya, melihat rentetan panjang kurungan tidak sekata di bawah, saya tahu apa yang saya mahu lakukan Mereka menetapkan syarat di sana , dan kemudian putus lagi dan lagi Menjengkelkan untuk memikirkannya. Bagaimana saya boleh menunggu tanpa goto pada masa ini. Tidak lama lagi! Kami terus pergi dan melompat ke
untuk meneruskan ke peringkat seterusnya program kami.
Tetapi saya tertanya-tanya jika anda perasan bahawa dalam gambar terakhir, kami menggunakan dua goto, tetapi mereka menunjuk pada label yang sama Ya, kami boleh membuat program melompat pada titik permulaan yang berbeza. tetapi harus diingat bahawa kita tidak boleh melompat ke dua label di bawah goto yang sama Ini mudah difahami Jika anda, menerima pesanan yang meminta anda pergi ke dua atau lebih tempat yang berbeza, Anda juga akan keliru, di mana. patutkah saya pergi?
Satu lagi perbezaan dari sebelumnya ialah saya menambah koma bertitik (;) selepas pengecam xiayige: Mengapa ini? Pengecam mesti diikuti dengan pernyataan, yang boleh menjadi tugasan atau pernyataan Tetapi jika benar-benar tiada cara untuk menambah pernyataan selepasnya, kita boleh menambah koma bertitik dan menganggapnya sebagai pernyataan kosong untuk membuat pengecam dijalankan.
Ps: Sebenarnya, anda boleh mengisytiharkan pembolehubah sampah di sini, atau kenyataan lain yang tidak bermakna, tetapi ia akan menyukarkan kod untuk difahami, dan tidak disyorkan untuk berbuat demikian.
Ini adalah perkara yang paling banyak digunakan oleh semua orang untuk kegunaan lain, ia bergantung pada imaginasi anda.
Berikut ialah apabila saya menggunakan 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("结果是%d\n",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
Cadangan berkaitan: "Tutorial Video C"
Atas ialah kandungan terperinci Adakah go kata kunci dalam bahasa C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!