C语言学习之路
第一章 初识C语言
第二章 变量
第三章 常量
第四章 字符串与转义字符
第五章 数组
第六章 运算符
第七章 指针
第八章 结构体
第九章 控制语句之条件语句
第十章 控制语句之循环语句
第十一章 控制语句之转向语句
前言
首先我们需要了解一下,转向语句是什么?我们都知道,在进行循环语句时,只有当条件不为真的时候才能跳脱出语句的循环。那么转向语句的存在目的就是,即便条件依然为真,依然能够跳出循环。
一、转向语句:
1、break:
break语句在之前的switch语句中,就已经提到了。那么break的存在有什么作用呢?
break的功能如下:
(1)跳出break语句所在循环
在一个循环语句中,我们写一个break的语句,直接跳出循环。但是,在多个循环语句中,break的存在究竟是跳出一个循环还是跳出所有循环呢?
while (1)
{
while (2)
{
printf("1");
break;
}
printf("2");
}
当我们执行上述语句后,我们发现,打印的界面中是无数个12。这说明什么呢?这说明当进入内侧循环时,打印出了一个1,然后跳出了内侧的循环后,打印了一个2。接着继续第二次的循环,再次进入内循环打印出了一个1,然后跳出了内侧的循环后,打印了一个2…
所以 break跳出的是最内侧的循环。
(2)跳出switch语句,防止不断地向下执行
int a = 2;
switch(a)
{
case 1:
代码1
break;
case 2:
代码2
break;
case 3:
代码3
break;
case 4:
代码4
break;
default:
代码5
break;
}
首先,我们对上述的代码进行解释。
编译器根据a的值,进行第一次判断,发现不满足。再跳转到第二次判断,发现满足条件,那么就开始执行代码2,代码2执行完以后,就会执行后面提到的转向语句break
,然后跳出该switch语句。说明break的存在,避免了switch继续执行下面的代码,及时跳了出去。
那如果我们不写break会怎样呢?
以下面的例子为例:
图解:
我们发现,没了break之后,代码会不断地向下执行,无论条件是否满足都会执行下面的代码。所以,switch语句只会通过判断条件来决定从何处开始!而通过break的配合退出该语句。否则,代码会执行到底。
2、continue:
break语句的存在,使得直接跳出了整个循环。而continue仅仅是跳出本次循环。什么意思呢?
我们以下面的代码为例。
for(int i=0;i<10;i++)
{
if(i==5)
{
continue;
}
printf("%d ",i);
}
我们发现,打印的结果中唯独没有5,而其余的数字都打印了出来。
那么这代表着什么呢?代表continue并没有终止整个循环,而仅仅终止了i==5时所对应的循环。
由此我们就能够发现,continue仅仅跳出了本次循环。而break是跳出了整个循环。
3、goto:
goto语句的存在则使得整个代码的执行更加随意和灵活。
语法:
goto A;
A ://冒号
while (1)
{
printf("1\n");
while (2)
{
printf("2\n");
while (3)
{
printf("3\n");
goto A;
}
}
}
A:
printf("循环结束");
我们用图来解释一下整个的流程。
我们会发现,无论goto在多少个循环的内部,都能直接跳到标记的位置。所以当我们身处多个循环时,goto语句要比break更好用。但是!在日后的开发工作中,不建议使用goto语句,容易造成混乱!
总结
今天我们学的主要是跳出循环时,所用的转折语句。转折语句分为三种:break,continue,goto。三种转折语句的应用场景和语法各不相同,希望大家能够灵活的使用。
前途很远,也很暗,然而不要怕,不怕的人面前才有路。
——鲁迅