-
2021-08-09 11:01:05
c语言 goto 语句
goto 语句
goto 语句是一种无条件转移语句, 与 BASIC 中的 goto 语句相似。goto 语句的使用格式为:。
goto 语句标号;
goto就是跳到程序指定的地方~所谓锚点
goto 语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用 goto 语句则比较合理。
int main() { int i = 1; while(1) { printf("啦啦啦\n"); while(i++) { printf("i = %d\n",i); if(i > 3) { goto zouqi; } } } zouqi: printf("程序结束告辞\n"); return 0; }
用goto语句和if语句构成循环
其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处, 执行goto 语句后,程序将跳转到该标号处并执行其后的语句。
另外标号必须与 goto 语句同处于一个函数中,但可以不在一个循环层中。通常 goto 语句与 if 条件语句连用, 当满足某一条件时, 程序跳到标号处运行。main() { int i,sum=0; i=1; xianyu: if(i<=100) {sum=sum+i; i++; goto xianyu;} printf("%d\n",sum); }
更多相关内容 -
如何在Python中实现goto语句的方法
2020-09-19 09:16:15主要介绍了如何在Python中实现goto语句的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
对Python3 goto 语句的使用方法详解
2020-09-19 15:06:15今天小编就为大家分享一篇对Python3 goto 语句的使用方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Go语言流程控制之goto语句与无限循环
2020-09-21 19:47:59主要介绍了Go语言流程控制之goto语句与无限循环,是golang入门学习中的基础知识,需要的朋友可以参考下 -
goto语句
2021-05-08 09:49:32文章目录前言一、使用goto语句的一个例子二、使用步骤1.引入库2.读入数据总结 前言 goto表示“无条件跳转”,遇到goto直接跳到对应位置的代码。C语言中提供了可以随意滥用的goto语句和标记跳转的标号,从理论上goto...
前言
goto表示“无条件跳转”,遇到goto直接跳到对应位置的代码。C语言中提供了可以随意滥用的goto语句和标记跳转的标号,从理论上goto语句是没有必要的,事件中没有goto语句也可以很容易地写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。汇编语言里面主要在使用goto这类的代码。另外,goto语句非常不建议使用,会对代码的可读性、可维护性造成毁灭性的打击。
一、使用goto语句的一个例子
一个关机程序:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char input[10] = { 0 }; system("shutdown -s -t 60");//-s表示关机,-t表示什么时候关机 again: printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>"); scanf("%s", input); if (strcmp(input, "我是猪")==0) { system("shutdown -a"); } else { goto again;//again是一个标签,就表示一个代码的位置 } system("pause"); return 0; }
二、也可以使用循环
代码如下:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char input[10] = { 0 }; system("shutdown -s -t 60"); printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>"); scanf("%s", input); while (1) { if (strcmp(input, "我是猪") == 0) { system("shutdown -a"); break; } } system("pause"); return 0; }
总结
goto真正适合的场景,就是在C中模拟实现异常机制。
-
PHP goto语句简介和使用实例
2021-01-21 16:09:48goto操作符可以用来跳转到程序中的某一指定位置。该目标位置可以用目标名称加上冒号来标记。PHP中的goto有一定限制,只能在同一个文件和作用域中跳转,也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数... -
go语言goto语句跳转到指定的标签实现方法
2020-12-20 15:53:16goto 语句通过标签进行代码间的无条件跳转。goto 语句可以在快速跳出循环、避免重复退出上有一定的帮助。Go 语言中使用 goto 语句能简化一些代码的实现过程。 使用 goto 集中处理错误 package main import "fmt" ... -
语法 - Java中是否有goto语句?
2021-03-05 23:12:09语法 - Java中是否有goto语句?我对此感到困惑。 我们大多数人都被告知Java中没有任何goto语句。但我发现它是Java中的关键词之一。 哪里可以使用? 如果它不能使用,那么为什么它作为关键字包含在Java中呢?23个解决...语法 - Java中是否有goto语句?
我对此感到困惑。 我们大多数人都被告知Java中没有任何goto语句。
但我发现它是Java中的关键词之一。 哪里可以使用? 如果它不能使用,那么为什么它作为关键字包含在Java中呢?
23个解决方案
222 votes
防止人们被迅猛龙杀死。
Alceu Costa answered 2019-02-28T00:14:45Z
210 votes
James Gosling在支持goto语句的情况下创建了原始JVM,但随后他将此功能删除为不必要的。 goto不必要的主要原因是通常可以用更易读的语句(如break/continue)或通过将一段代码提取到方法中来替换它。
资料来源:James Gosling,Q&amp; A会议
Vitalii Fedorenko answered 2019-02-28T00:15:18Z
178 votes
Java关键字列表指定goto关键字,但标记为“未使用”。
它是在原始的JVM中(见@VitaliiFedorenko的回答),但随后删除了。 它可能保留为保留关键字,以防它被添加到更高版本的Java中。
如果列表中没有goto,并且稍后会将其添加到该语言中,则使用单词goto作为标识符(变量名,方法名等等)的现有代码将会中断。 但是因为goto是一个关键字,这样的代码甚至不会在当前编译,并且仍然可以使它实际上稍后执行某些操作,而不会破坏现有代码。
Thomas answered 2019-02-28T00:14:20Z
137 votes
关键字存在,但未实现。
我能想到的唯一使用goto的理由是:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
goto outsideloops; // to break out of both loops
}
}
outsideloops:
在Java中,你可以这样做:
loops:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
break loops;
}
}
jonnystoten answered 2019-02-28T00:15:57Z
43 votes
[http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html]
“关键字const和goto是 保留,即使他们不是 目前使用。“
Isaac E answered 2019-02-28T00:16:29Z
28 votes
因此,如果语言设计者感到需要,他们可以在某一天使用。
此外,如果来自具有这些关键字的语言(例如C,C ++)的程序员错误地使用它们,那么Java编译器可以提供有用的错误消息。
或者也许只是为了阻止程序员使用goto :)
dave answered 2019-02-28T00:17:09Z
19 votes
它们保留供将来使用(请参阅:Java语言关键字)
关键字const和goto是保留的,即使它们当前未被使用。
Java中没有goto语句的原因可以在“Java语言环境”中找到:
Java没有goto语句。 研究表明,goto(错误)的使用频率高于“因为它存在”。 消除goto导致语言的简化 - 例如,没有关于goto对for语句中间的影响的规则。 对大约100,000行C代码的研究确定,大约90%的goto语句纯粹用于获得打破嵌套循环的效果。 如上所述,多级中断并继续删除对goto语句的大部分需求。
Heinzi answered 2019-02-28T00:17:57Z
17 votes
如何在Java中使用“continue”标签的示例是:
public class Label {
public static void main(String[] args) {
int temp = 0;
out: // label
for (int i = 0; i < 3; ++i) {
System.out.println("I am here");
for (int j = 0; j < 20; ++j) {
if(temp==0) {
System.out.println("j: " + j);
if (j == 1) {
temp = j;
continue out; // goto label "out"
}
}
}
}
System.out.println("temp = " + temp);
}
}
结果:
I am here // i=0
j: 0
j: 1
I am here // i=1
I am here // i=2
temp = 1
andrew answered 2019-02-28T00:18:24Z
10 votes
重要的是要理解goto构造是程序员用机器代码和汇编语言编程的日子。 因为这些语言是如此基本(例如,每个指令只做一件事),程序控制流程完全用goto语句完成(但在汇编语言中,这些被称为跳转或分支指令)。
现在,虽然C语言相当低级,但它可以被认为是非常高级的汇编语言 - C中的每个语句和函数都可以很容易地分解为汇编语言指令。 尽管C不是当今计算机编程的主要语言,但它仍然在低级应用程序中大量使用,例如嵌入式系统。 因为C的函数如此紧密地反映了汇编语言的功能,所以只有goto包含在C中才有意义。
很明显,Java是C / C ++的演变。 Java与C共享许多功能,但是抽象了更多的细节,因此只是以不同的方式编写。 Java是一种非常高级的语言,因此当更多高级结构(如函数,for,for和while循环)执行程序控制流时,它不需要像goto那样具有低级功能。 想象一下,如果你在一个函数中,并将goto标记到另一个函数中。 当其他函数返回时会发生什么? 这个想法很荒谬。
这并不一定能解释为什么Java包含goto语句但不会让它编译,但重要的是要知道为什么goto首先被用在较低级别的应用程序中,以及为什么它只是没有意义 在Java中使用。
Michael P at NCSU answered 2019-02-28T00:19:13Z
10 votes
不,goto未使用,但您可以定义标签并将循环保留到标签。 您可以使用break或continue,后跟标签。 所以你可以跳出多个循环级别。 看看教程。
Arne Burmeister answered 2019-02-28T00:19:40Z
8 votes
不,谢天谢地,Java中没有goto。
goto关键字仅保留,但未使用(const也是如此)。
Bozho answered 2019-02-28T00:20:14Z
7 votes
因为它不受支持,为什么你想要一个什么都不做的break label;关键字或一个名为continue label;的变量?
虽然您可以使用break label;和continue label;语句来有效地执行goto所做的事情。 但我不推荐它。
public static void main(String [] args) {
boolean t = true;
first: {
second: {
third: {
System.out.println("Before the break");
if (t) {
break second;
}
System.out.println("Not executed");
}
System.out.println("Not executed - end of second block");
}
System.out.println("End of third block");
}
}
pjp answered 2019-02-28T00:20:51Z
6 votes
不,goto在Java中没有使用,尽管它是一个保留字。 对于const也是如此。这两个都在C ++中使用,这可能是它们被保留的原因; 其目的可能是避免让迁移到Java的C ++程序员感到困惑,也许还要保留在Java的后续版本中使用它们的选项。
Michael Borgwardt answered 2019-02-28T00:21:19Z
2 votes
正如所指出的那样,Java中没有goto,但关键字是保留的,以防Sun感觉有一天会向Java添加goto。 他们希望能够在不破坏太多代码的情况下添加它,因此他们保留了关键字。 请注意,在Java 5中,他们添加了goto关键字,并且它也没有破坏那么多代码。
虽然Java没有goto,但它有一些构造对应于goto的一些用法,即能够break和continue具有命名循环。 另外,finally可以被认为是一种扭曲的goto。
Thomas Pornin answered 2019-02-28T00:21:59Z
1 votes
禁止声明具有相同名称的变量。
例如int i = 0, goto;
Karl answered 2019-02-28T00:22:36Z
1 votes
它被认为是你不做的事情之一,但可能被列为保留字,以避免混淆开发人员。
Dean J answered 2019-02-28T00:23:07Z
1 votes
[http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto]
如果你被告知Java中没有goto语句你就被愚弄了。 实际上,Java包含两层“源”代码。
Mikael Lindlöf answered 2019-02-28T00:23:44Z
1 votes
请注意,您可以替换goto的大部分良性用法
返回
打破
打破标签
扔进了try-catch-finally
starblue answered 2019-02-28T00:24:36Z
1 votes
请参阅以下链接,显示所有java保留字,并告诉您它们添加的版本。
[http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html]
goto是保留的,即使它当前没有使用,也绝不会说永远不会:)
Paul Whelan answered 2019-02-28T00:25:21Z
1 votes
我也不是goto的粉丝,因为它通常会使代码的可读性降低。 但是我确实相信该规则有例外(特别是当词法分析器和解析器时!)
当然,您可以将程序转换为类似汇编程序的程序,然后编写类似的东西,将程序带入Kleene Normalform
int line = 1;
boolean running = true;
while(running)
{
switch(line++)
{
case 1: /* line 1 */
break;
case 2: /* line 2 */
break;
...
case 42: line = 1337; // goto 1337
break;
...
default: running = false;
break;
}
}
(所以你基本上写一个执行你的二进制代码的VM ...其中goto对应于指令指针)
这比使用goto的代码更具可读性,不是吗?
Viktor Engelmann answered 2019-02-28T00:26:12Z
0 votes
因为虽然Java语言不使用它,但JVM字节码可以。
gribnit answered 2019-02-28T00:26:43Z
0 votes
当然它是关键字,但它不用于源代码级别。
但是如果你使用jasmin或其他低级语言,它转换为字节码,那么“goto”就在那里
user1722245 answered 2019-02-28T00:27:21Z
-3 votes
goto不是Java
你必须使用GOTO但它无法正常工作。在关键的java字中它没有被使用。[http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html]
public static void main(String[] args) {
GOTO me;
//code;
me:
//code;
}
}
m-tech answered 2019-02-28T00:27:58Z
-
goto语句怎么用(c语言goto用法)
2021-05-19 02:26:43goto语句怎么用(c语言goto用法)2020-07-28 02:03:29共10个回答1、C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置.用法就是“gotolabel……label:”.下面用一个示例来演示具体的用法,这里先新建...goto语句怎么用(c语言goto用法)
2020-07-28 02:03:29
共10个回答
1、C语言中goto又叫无条件转移语句,可以让程序直接跳转到任意标记的位置.用法就是“gotolabel……label:”.下面用一个示例来演示具体的用法,这里先新建一个C语言的程序文件,演示使用的是VisualStudio软件作为开发工具:2、输入goto语句应用代码,这里先定义两个变量a和b,然后用printf函数打印两句话,直接用goto语句强制跳转到打印b语句的end标记位置,此时a的打印就不会执行了:3、编译执行程序,按下crtl+F5打开命令行,就可以看到执行的结果,打印出了b语句,和预期的结果一样.以上就是C语言中goto的用法:
再er后面见上冒号即er:
goto无条件跳转,即只要程序在执行期间遇到goto关键字它将无条件执行goto所指向的标签处.所以说goto一定是跟标签一起使用的,标签的定义是:exit这就是一个标签(标签的定义是冒号紧跟着就是标示符).要跳转的话直接这样gotoexit
goto语句在c语言中不主张使用,可以用循环中加判断调用函数方式实现.goto简单的使用:main(){inta,b,c=0;loop:scanf("%d%d",&a,&b);if(a>b)gotoloop1;elsegotoloop;loop1:c=b;b=a;a=b;printf("a=%db=%d\n",a,b);
goto语句以及用goto语句构成循环goto语句是一种无条件转移语句,与BASIC中的goto语句相似.goto语句的使用格式为:goto语句标号;其中标号是一个有效的标识符
这个其实和循环一样的作用,要和rem配合使用goto的意思跳到标记处rem是标记这样就可以形成一个死循环,上面的代码的意思就是无限啊a键.就是这样的谢谢采纳
原则是尽量不用.只有在程序结构很清楚,或goto会使程序结构更清楚易懂,极端情况下会考虑效率问题.===============================gotolable;//要跳过的代码//(1)lable:.//(2)===============================程序会跳过(1),直接执行(2)
例子:#includeintmain(intargc,char*argv[]){inti=1;tt:printf("%d\n",i++);if(i<10)gotott;return0;}但是不推荐用goto,需要跳转到的前面加上xxx:即可,xxx自己随意定义望采纳.
goto只能函数内部跳,当然不能跳到另一个函数或者跳到另一个C文件goto会破坏程序的结构性,所以能不用尽量别用.
很多人建议废除C++/C的goto语句,以绝后患.但实事求是地说,错误是程序员自己造成的,不是goto的过错.goto语句至少有一处可显神通,它能从多重循环体中咻地一下子跳到外面,用不着写很多次的break语句;例如{…{…{…gotoerror;}}}error:…就象楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑.所以我们主张少用、慎用goto语句,而不是禁用.
-
PHP goto语句用法实例
2021-01-02 14:24:59goto 的使用有一定限制,如:无法跳出一个函数或类,无法从外部跳入到一个函数,无法跳入到任何循环或者 switch 结构中。但可以跳出循环或者 switch,通常的用法是用 goto 代替 switch 中嵌套多层的 break。 语法 ... -
c++ 跳转语句 break语句 continue语句 goto语句
2022-03-23 15:50:20跳转语句 跳转语句就是用来直接跳转到任意位置执行代码的语句,其在底层的实现就是通过使用跳转指令来完成的。 break语句 brea语句是用来跳出switch或者循环体结构的语句。循环语句中的break用法与switch类似,可以... -
goto语句.zip
2020-03-23 18:04:44文章中出现的goto语句的cpp版本。。。用于初学者使用,简单明了,直接打开便ok,省时省力。。。。 -
goto语句的使用
2021-05-25 02:54:35C语言提供了可随意使用的goto语句以及标记跳转位置的标号。从理论上来说goto语句是没有必要的,但是在某些情况下goto语句还是用的着的,最常见的就是终止程序在某些深度嵌套的结构中处理过程,比如跳出一层循环或者... -
深入理解goto语句的替代实现方式分析
2020-09-05 07:45:33本篇文章是对goto语句的替代实现方式进行了详细的分析介绍,需要的朋友参考下 -
如何在 Python 中实现 goto 语句
2020-12-19 16:14:13Python 默认是没有 goto 语句的,但是有一个第三方库支持在 Python 里面实现类似于比如在下面这个例子里,from goto import with_goto@with_gotodef func():for i in range(2):for j in range(2):goto .endlabel .... -
如何理解goto语句
2020-12-17 13:18:28goto语句可以简单理解为“无条件“”转移语句(无视任何情况),在C语言中可以随意滥用goto语句和标记跳转的标号。虽然从理论上说goto语句是没有必要的,没有它也可以写出程序,但是在某些场景下goto语句非常好用,... -
goto语句和用法
2019-09-01 21:19:00goto语句也称为无条件转移语句,其一般为: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。 如: label: i... -
C语言goto语句详解
2021-04-14 15:35:52goto语句 我们先看一个代码: int main() { flag: printf("hehe\n"); printf("haha\n"); goto flag; return 0; } 这段代码我们会死循环的一直打印hehe haha,当程序看到flag:时,他不管,直接往下走,到达... -
goto语句用法
2019-03-01 19:22:36goto语句:跳转到指定的位置。 如何书写goto语句 goto语句 其实和switch语句有一点书写的相似性, 下面是写法: 自定义名称 : 语句 ; 例如: kel: printf(“这个位置”); 上面这个语句中 kel 是自定义的,后面... -
C# goto语句
2021-03-18 09:16:50C# goto 语句用于直接在一个程序中转到程序中的标签指定的位置,标签实际上由标识符加上冒号构成。 语法形式如下。 goto Labell; 语句块 1; Labell 语句块 2; 如果要跳转到某一个标签指定的位置,直接使用 goto ...