使用goto语句是不是只是对代码顺序的一个跳转,而没有对代码内容产生实质影响?
2条回答 默认 最新
- Williamtym 2023-04-17 08:56关注
goto语句
目录
- goto语句
- goto语句的定义
- 避免使用goto
- goto语句应用
goto语句的定义
早期版本的BASIC和FORTRAN所依赖的goto语句,在C语言中仍旧适用。但是C和其他的两种语言不同,没有goto语句,C程序能更好的执行。Kernighan和Ritchie提到goto语句易被滥用,并建议谨慎使用或者不用。接下来相应介绍goto语句。
goto语句由两部分:goto和标签名。标签名遵循变量命名规则:goto part1;
要让这条语句正常运行,函数必须如下形式:
part2: printf("Refined analysis:");
避免使用goto
原则上,根本不用在C语言程序中使用goto语句。但是这个语句在FORTRAN或者BASIC中是必不可少的。按照书本要求来写的话,在此之前列举一些使用goto的常见情况,然后再介绍C的解决方案。
if (size > 12) goto a; goto b; a:cost = cost * 1.05; flag = 2; b:bill = cost * flag;
对于以前的BASIC和FORTRAN,只有直接跟在if条件后面的一条语句才属于if,不能不能使用块或复合语句。
if (size > 12) { cost = cost * 1.05; flag = 2; } bill = cost * flag;
实际上,continue和break是goto语句的一个延伸,而且好处是名称已经表明他们的用法了,不需要再使用标签进行说明的。而且,goto语句会打乱原来代码的运行顺序,从而导致代码无法得到我们想要的结果,所以要少用,或者不用。
goto语句应用
当然可以向鹏哥学习
用goto语句写一个应用代码,如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char input[20] = { 0 }; system("shutdown -s -t 60"); again: printf("Please note that your PC will shut down in 60 seconds\n"); printf("If you enter:我是小猪.Cancel the shutdown\n"); scanf("%s",input); if(strcmp(input, "我是小猪") == 0) { system("shutdown -a"); } else { goto again; } return 0; }
注意goto语句只能在一个函数范围内跳转,不能跨函数。可以测试:
#include<stdio.h> void test() { flag: printf("test\n"); } int main() { goto flag;//这里就会红色报错,显示标签flag未定义; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用