除非跳出多个循环嵌套和远程注入技术,否则尽量少用goto

goto会降低程序的可读性,让代码难以调试

利用递归也可以实现循环结构和do while类似

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
void main1(){
//continue用于选出所有满足条件的,只能用于循环,可以跳出本次执行,继续本轮循环的下一次循环
//break 用于选出一个满足条件的,只能用于循环和switch,可以跳出本轮循环,继续本轮循环后面的语句
//goto可以跳出多层嵌套循环,for,while,dowhile本质是用goto语句实现的,goto语句比较底层 //语句标号是语句前面的标识符,不能是整数,标识符不是变量,不能打印
goto A2; //goto可以跳过A1
A1: printf("hello world"); //A1即是语句标识符
A2: printf("hello world");
getchar();
}
void main2(){
A1: printf("hello world"); //A1即是语句标识符
A2: printf("hello world");
goto A2; //goto形成死循环
getchar();
} //goto与if配合形成循环
void main3(){ int i = 1;
A1:if (i < 10){ //循环条件
printf("\n%d", i); //A1即是语句标识符
i++;
goto A1; //goto形成循环
}
getchar();
} ///用goto实现三种循环
void main4(){
//输出1-10中不被3整除的数
for (int i = 1; i <= 10; i++){
if (i % 3 == 0){
continue;
}
printf("%d\n", i);
}
//用goto改写
int j=0;
A1:if (j <10){
j++;
if (j % 3 == 0){ goto A1;
}
printf("%d\n", j);
goto A1;
}
getchar();
} void main(){
//输出1-10中第一个能被3整除的数
for (int i = 1; i <= 10; i++){
if (i % 3 == 0){
printf("%d\n", i);
break;
}
}
//用goto改写
int j = 0;
A1:if (j <10){
j++;
if (j % 3 == 0){
printf("%d\n", j);
goto A2;
}
goto A1;
}
A2:getchar();
}

goto语句的本质的更多相关文章

  1. 通过goto语句学习if...else、switch语句并简单优化

    goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...

  2. goto语句 switch语句

    goto语句 #include <iostream> using namespace std; int main() { int i = 1; number: i++; std::cout ...

  3. 在程序中,你敢怎样使用“goto”语句!

    用goto是一个个人爱好的问题.“我”的意见是,十个goto中有九个可以用相应的结构化结构来替换.在那些简单情形下,你可以完全替换掉goto,在复杂的情况下,十个中也有九个可以不用:你可以把部分代码写 ...

  4. 布尔逻辑运算,goto语句

    布尔逻辑 bool类型可以有两个值:true或者false. 布尔比较需要使用布尔比较运算符(关系运算符),下图:var1为布尔类型的变量,var2,var3则可以是不同类型.

  5. Go 语言 goto 语句

    Go 语言的 goto 语句可以无条件地转移到过程中指定的行. goto语句通常与条件语句配合使用.可用来实现条件转移, 构成循环,跳出循环体等功能. 但是,在结构化程序设计中一般不主张使用goto语 ...

  6. C语言 goto语句

    /* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...

  7. goto语句引起的crosses initialization of XXX

    1. 背景 goto语句虽然目前已经不提倡使用,但是用起来还是很方便,尤其是老代码中见的比较多. 在改动有goto语句的老代码时需要特别注意,是否跳过来资源的释放.有用变量的初始化等等. 很久之前写c ...

  8. C语言goto语句的使用

    不使用goto语句: 使用goto语句: 使用goto语句时需要注意以下原则:1) 不要过份地使用.比如图2中的60行就没有采用goto语句跳到程序的最后面,之所以这里不使用goto是为了阅读方便.因 ...

  9. goto语句的升级版,setjmp,longjmp

    我们知道goto语句是不能跳过函数的,但是在我么C语言的应用中,在不使用汇编的情况下,遇到需要跳出深层循环比如检错机制的时候,有确实想要跨函数跳转,有没有上面办法可以做到呢? 这就是今天要讲的两个库函 ...

随机推荐

  1. 如何在CentOS上安装Tensorflow的gpu版本?

    系统配置 系统版本: Centos7.6 语言: Python3.5(anaconda3 4.2) 框架: Tensorflow 安装依赖 sudo yum install openjdk-8-jdk ...

  2. 吴裕雄--天生自然 python开发学习笔记:解决No module named 'mpl_toolkits.basemap'问题

    . 下载: basemap-1.1.0-cp36-cp36m-win_amd64.whl和pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl这两个文件 先运行: 再运行:

  3. java【第三课 条件语句】

    一.java条件语句 import java.util.Scanner; //导入扫描仪 public class demo{ public static void main(String[] arg ...

  4. Java细节1--输入关闭

    import java.util.Scanner; public class Demo01 { public static void main(String[] args) { Scanner sc= ...

  5. 使用Office365账号配置SMTP中继服务器

    · 如何将企业中的多功能设备(打印机.扫描仪等 )或应用程序设置为使用 Office 365 发送电子邮件,微软给出了3种方法: SMTP 客户端提交 直接发送 SMTP 中继 以上3种方式的介绍,大 ...

  6. ASP.NET常用内置对象(三)Server

    Server对象是HttpServerUtility的一个实例,也是上下文对象HttpContext的一个属性,提供用于处理Web请求的Helper方法. Server.MapPath("& ...

  7. 在mac下初次使用pygame踩坑纪实(卡死)

    初次使用pygame实现绘图功能就踩坑 直接上代码 import pygame pygame.init() # 创建游戏的窗口 480 * 700screen = pygame.display.set ...

  8. 使用ADO.NET 查询和操作数据

    一.使用StringBuilder类追加和删除字符串 1.创建StringBuilder类的对象 StringBuilder sb=new StringBuilder("初始字符串值&quo ...

  9. 在linux中安装nginx

    linux系统安装在vmware中,首先在主机中利用shell工具与虚拟机连接 1.在linux中查看虚拟机的ip地址 在终端输入 ifconfig 红框里面就是ip地址 2.在主机中打开shell工 ...

  10. Qt Installer Framework翻译(7-8)

    C++ API C ++ API文档是为开发Qt Installer Framework的开发人员编写的. 它描述了内部API,因此没有兼容性保证. 此外,该文档尚在开发中,因此缺少部分内容,而其他部 ...