Was bedeutet die goto-Anweisung in der C-Sprache?
In der C-Sprache wird die goto-Anweisung als bedingungslose Übertragungsanweisung bezeichnet, die eine bedingungslose Übertragung der Kontrolle an eine gekennzeichnete Anweisung innerhalb derselben Funktion ermöglicht; die Syntax lautet „goto label;...label: Statement;“, wobei label can ein beliebiger einfacher Text außer C-Schlüsselwörtern sein, der vor oder nach der goto-Anweisung in einem C-Programm gesetzt werden kann.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.
C-Sprache goto-Anweisung
goto-Anweisung, in C auch als bedingungslose Übertragungsanweisung bekannt, gilt als bedingungslos, ist aber tatsächlich immer noch bedingt, sodass die bedingungslose Übertragung der Kontrolle möglich ist gleiche funktionsgekennzeichnete Anweisungen innerhalb.
Grammatik
Die Syntax der goto-Anweisung in der C-Sprache:
goto label; .. . label: statement;
Hier kann die Bezeichnung ein beliebiger einfacher Text außer dem C-Schlüsselwort sein und vor oder nach der goto-Anweisung im C-Programm gesetzt werden. „Flussdiagramm“ Ich habe kein Englisch angezeigt. Wenn in der goto-Anweisung ein Fehler auftritt, wird dieses Wort wahrscheinlich im Fehlerinhalt angezeigt. Gleichzeitig müssen wir nach der Bezeichnung einen Doppelpunkt (:) hinzufügen. Wir haben den Bezeichner festgelegt und dann den Startpunkt – goto bezeichner;. Zuerst müssen wir dem Computer mitteilen, dass wir springen werden, was die Rolle von „goto“ ist. Dann müssen wir ihm mitteilen, wohin wir springen möchten, was der Bezeichner ist, den wir gerade festgelegt haben. Schließlich fügen wir, wie bei anderen Anweisungen, Punkte hinzu dazu. (;) bedeutet das Ende der Aussage. So sieht die Editorseite aus.
und die laufenden Ergebnisse
Es ist ersichtlich, dass unsere 5. Zeile von printf nicht ausgeführt wurde und wir direkt zur 7. Zeile von printf kamen. Es kann zur nächsten Aussage oder nach vorne springen.
Auf diese Weise wird es zu einer einfachen Schleife ohne Endbedingung
Sie können natürlich versuchen, diesen Code auszuführen und ihm eine Endbedingung zu geben und ihn zu beurteilen Habe die Fähigkeit für und während.
Leider können wir goto nicht funktionsübergreifend verwenden. Es gibt andere Anweisungen, die implementiert werden können, daher werden wir hier nicht näher darauf eingehen.
Wenn die if-Bedingung wahr ist, weiß ich nach der Ausgabe, wenn ich mir die lange Reihe ungerader Klammern unten ansehe, dass ich die Bedingungen dafür festlegen und es dann immer wieder tun muss. Pause, es ist nervig darüber nachzudenken. Wie kann ich zu diesem Zeitpunkt warten, ohne zu gehen? Sehr bald! Wir gehen direkt zu
und springen zu
Aber ich frage mich, ob Ihnen auf dem letzten Bild aufgefallen ist, dass wir zwei Gotos verwendet haben, die aber auf die gleiche Bezeichnung zeigten. Ja, wir können das Programm von verschiedenen Startpunkten aus zum gleichen Endpunkt springen lassen, aber das sollte so sein Beachten Sie, dass wir nicht zu zwei Labels unter demselben Ziel springen können. Wenn Sie an Ihrer Stelle wären und Sie aufgefordert würden, zu zwei oder noch mehr verschiedenen Orten zu gehen, wären Sie verwirrt Ich gehe?
Ein weiterer Unterschied zu zuvor besteht darin, dass ich nach der Kennung xiayige: ein Semikolon (;) hinzugefügt habe. Dem Bezeichner muss eine Anweisung folgen, die eine Zuweisung oder eine Anweisung sein kann. Wenn es jedoch wirklich keine Möglichkeit gibt, eine Anweisung danach hinzuzufügen, können wir ein Semikolon hinzufügen und es als leere Anweisung behandeln, damit der Bezeichner ausgeführt wird.
Ps: Tatsächlich können Sie hier eine Garbage-Variable oder andere bedeutungslose Anweisungen deklarieren, aber dadurch wird der Code schwer verständlich und es wird nicht empfohlen, dies zu tun.
#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
说明
在任何编程语言中,都不建议使用 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到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。
④应该避免向两个方向跳转。这样最容易导致"面条代码",即逻辑混乱。
相关推荐:《C视频教程》
Das obige ist der detaillierte Inhalt vonWas bedeutet die goto-Anweisung in der C-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



C Sprachdatenstruktur: Die Datenrepräsentation des Baumes und des Diagramms ist eine hierarchische Datenstruktur, die aus Knoten besteht. Jeder Knoten enthält ein Datenelement und einen Zeiger auf seine untergeordneten Knoten. Der binäre Baum ist eine besondere Art von Baum. Jeder Knoten hat höchstens zwei Kinderknoten. Die Daten repräsentieren structTreenode {intdata; structTreenode*links; structTreenode*rechts;}; Die Operation erstellt einen Baumtraversalbaum (Vorbereitung, in Ordnung und späterer Reihenfolge) Suchbauminsertion-Knoten Lösches Knotendiagramm ist eine Sammlung von Datenstrukturen, wobei Elemente Scheitelpunkte sind, und sie können durch Kanten mit richtigen oder ungerechten Daten miteinander verbunden werden, die Nachbarn darstellen.

Die Wahrheit über Probleme mit der Dateibetrieb: Dateiöffnung fehlgeschlagen: unzureichende Berechtigungen, falsche Pfade und Datei besetzt. Das Schreiben von Daten fehlgeschlagen: Der Puffer ist voll, die Datei ist nicht beschreibbar und der Speicherplatz ist nicht ausreichend. Andere FAQs: Langsame Dateitraversal, falsche Textdateicodierung und Binärdatei -Leser -Fehler.

C Sprachmultithreading -Programmierhandbuch: Erstellen von Threads: Verwenden Sie die Funktion pThread_create (), um Thread -ID, Eigenschaften und Threadfunktionen anzugeben. Threadsynchronisation: Verhindern Sie den Datenwettbewerb durch Mutexes, Semaphoren und bedingte Variablen. Praktischer Fall: Verwenden Sie Multi-Threading, um die Fibonacci-Nummer zu berechnen, mehrere Threads Aufgaben zuzuweisen und die Ergebnisse zu synchronisieren. Fehlerbehebung: Lösen Sie Probleme wie Programmabstürze, Thread -Stop -Antworten und Leistungs Engpässe.

Wie gibt ich einen Countdown in C aus? Antwort: Verwenden Sie Schleifenanweisungen. Schritte: 1. Definieren Sie die Variable N und speichern Sie die Countdown -Nummer in der Ausgabe. 2. Verwenden Sie die while -Schleife, um n kontinuierlich zu drucken, bis n weniger als 1 ist; 3. Drucken Sie im Schleifenkörper den Wert von n aus; 4. Am Ende der Schleife subtrahieren Sie N um 1, um den nächsten kleineren gegenseitigen gegenseitigen gegenseitigen gegenseitig auszugeben.

Algorithmen sind die Anweisungen zur Lösung von Problemen, und ihre Ausführungsgeschwindigkeit und Speicherverwendung variieren. Bei der Programmierung basieren viele Algorithmen auf der Datensuche und Sortierung. In diesem Artikel werden mehrere Datenabruf- und Sortieralgorithmen eingeführt. Die lineare Suche geht davon aus, dass es ein Array gibt [20.500,10,5,100, 1,50] und die Nummer 50 ermitteln muss. Der lineare Suchalgorithmus prüft jedes Element im Array Eins nach eins nach dem anderen, bis der Zielwert gefunden oder das vollständige Array durchquert wird. Der Algorithmus-Flussdiagramm lautet wie folgt: Der Pseudo-Code für die lineare Suche lautet wie folgt: Überprüfen Sie jedes Element: Wenn der Zielwert gefunden wird: Return Return Falsch C-Sprache Implementierung: #includeIntmain (void) {i

C Sprachdatenstruktur: Überblick über die Schlüsselrolle der Datenstruktur in der künstlichen Intelligenz im Bereich der künstlichen Intelligenz sind Datenstrukturen für die Verarbeitung großer Datenmengen von entscheidender Bedeutung. Datenstrukturen bieten eine effektive Möglichkeit, Daten zu organisieren und zu verwalten, Algorithmen zu optimieren und die Programmeffizienz zu verbessern. Gemeinsame Datenstrukturen, die häufig verwendete Datenstrukturen in der C -Sprache sind: Arrays: Eine Reihe von nacheinander gespeicherten Datenelementen mit demselben Typ. Struktur: Ein Datentyp, der verschiedene Arten von Daten zusammen organisiert und ihnen einen Namen gibt. Linked List: Eine lineare Datenstruktur, in der Datenelemente durch Zeiger miteinander verbunden werden. Stack: Datenstruktur, die dem LEST-In-First-Out-Prinzip (LIFO) folgt. Warteschlange: Datenstruktur, die dem First-In-First-Out-Prinzip (FIFO) folgt. Praktischer Fall: Die benachbarte Tabelle in der Graphentheorie ist künstliche Intelligenz

Fehlerbehebungstipps für C -Sprachverarbeitungsdateien Wenn Dateien in der C -Sprache verarbeitet werden, können Sie auf verschiedene Probleme stoßen. Das Folgende sind häufig zu Problemen und entsprechende Lösungen: Problem 1: Der Dateicode kann nicht geöffnet werden: Datei*fp = fopen ("myFile.txt", "r"); if (fp == null) {// Datei Öffnen fehlgeschlagen} Grund} Grund: Dateipfad -Fehler -Datei nicht vorhandener Datei -Read -Lösung vorhanden. Charbuffer [100]; size_tread_bytes = fread (Puffer, 1, Siz

C -Sprachfunktionen sind wiederverwendbare Codeblöcke, empfangen Parameter für die Verarbeitung und die Rückgabeergebnisse. Es ähnelt dem schweizerischen Armeemesser, mächtig und erfordert sorgfältige Verwendung. Funktionen umfassen Elemente wie das Definieren von Formaten, Parametern, Rückgabetwerten und Funktionskörpern. Die erweiterte Verwendung umfasst Funktionszeiger, rekursive Funktionen und Rückruffunktionen. Häufige Fehler sind Fehlanpassung vom Typ und Vergessen, Prototypen zu deklarieren. Zu den Debugging -Fähigkeiten gehören das Druckvariablen und die Verwendung eines Debuggers. Leistungsoptimierung verwendet Inline -Funktionen. Das Funktionsdesign sollte dem Prinzip der einzigen Verantwortung folgen. Kenntnisse in C -Sprachfunktionen können die Programmierungseffizienz und die Codequalität erheblich verbessern.
