goto语句的本质
除非跳出多个循环嵌套和远程注入技术,否则尽量少用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语句的本质的更多相关文章
- 通过goto语句学习if...else、switch语句并简单优化
goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...
- goto语句 switch语句
goto语句 #include <iostream> using namespace std; int main() { int i = 1; number: i++; std::cout ...
- 在程序中,你敢怎样使用“goto”语句!
用goto是一个个人爱好的问题.“我”的意见是,十个goto中有九个可以用相应的结构化结构来替换.在那些简单情形下,你可以完全替换掉goto,在复杂的情况下,十个中也有九个可以不用:你可以把部分代码写 ...
- 布尔逻辑运算,goto语句
布尔逻辑 bool类型可以有两个值:true或者false. 布尔比较需要使用布尔比较运算符(关系运算符),下图:var1为布尔类型的变量,var2,var3则可以是不同类型.
- Go 语言 goto 语句
Go 语言的 goto 语句可以无条件地转移到过程中指定的行. goto语句通常与条件语句配合使用.可用来实现条件转移, 构成循环,跳出循环体等功能. 但是,在结构化程序设计中一般不主张使用goto语 ...
- C语言 goto语句
/* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...
- goto语句引起的crosses initialization of XXX
1. 背景 goto语句虽然目前已经不提倡使用,但是用起来还是很方便,尤其是老代码中见的比较多. 在改动有goto语句的老代码时需要特别注意,是否跳过来资源的释放.有用变量的初始化等等. 很久之前写c ...
- C语言goto语句的使用
不使用goto语句: 使用goto语句: 使用goto语句时需要注意以下原则:1) 不要过份地使用.比如图2中的60行就没有采用goto语句跳到程序的最后面,之所以这里不使用goto是为了阅读方便.因 ...
- goto语句的升级版,setjmp,longjmp
我们知道goto语句是不能跳过函数的,但是在我么C语言的应用中,在不使用汇编的情况下,遇到需要跳出深层循环比如检错机制的时候,有确实想要跨函数跳转,有没有上面办法可以做到呢? 这就是今天要讲的两个库函 ...
随机推荐
- 对Linux内核tty设备的一点理解(转)
虽然一直做嵌入式Linux,宿主机和开发板通信天天都在用tty设备通信,但是其实自己对TTY设备及终端的概念认识几乎是0.对于Linux内核的终端.tty.控制台等概念的认识很模糊.由于在学习的时候碰 ...
- JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理
壹 ❀ 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但 ...
- 自适应阈值化操作:adaptiveThreshold()函数
在图像阈值化操作中,更关注的是从二值化图像中,分离目标区域和背景区域,但是仅仅通过设定固定阈值很难达到理想的分割效果.而自适应阈值,则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值.这样 ...
- P2710 数列[fhq treap]
调了一辈子的fhq treap- 如果不会最大子段和 如果不会fhq treap 7个操作- 其中三个查询 单点查询其实可以和区间查询写成一个( fhq treap 的修改操作大概就是 \(split ...
- Python安装1 —— Python3.8的安装
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12377746.html 一:什么是Python解释器 解释器(英语:Interp ...
- C语言 三目运算
C语言 三目运算 功能:为真后可根据条件选择成立两个不同的表达式 如果表达式1值为真选择表达式2 如果表达式1值为假选择表达式3 案例 #define _CRT_SECURE_NO_WARNINGS ...
- 【H5适配 笔记1】rem适配
设备像素比(dpr)= 物理像素(手机渲染像素.分辨率)/设备独立像素(手机所显示元素的大小) 视口(viewport) 布局视口(获取浏览器布局视口高度,包括内边距,但不包括垂直滚动条.边框和外边距 ...
- NOI Online能力测试游记:退役选手的自娱自乐
2020年2月17日早上8点,CCF发布了关于举办NOI Online能力测试的通知. 为给选手提供一个锻炼的机会,CCF拟举办一场NOI Online能力测试.测试分为入门组和提高组,每组限额报名3 ...
- Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式
Oracle 12c 多租户家族(12c [12.2.0.1].18c [12.2.0.2].19c [12.2.0.3])如何在 PDB 中添加模式:19c (19.3) 手工添加示例 HR 用户 ...
- 2019-08-23 纪中NOIP模拟A组
T1 [JZOJ2908] 矩阵乘法 题目描述 给你一个 N*N 的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第 K 小数. 数据范围 对于 $20\%$ 的数据,$N \leq 100$,$Q ...