arduino笔记9:语言控制语句 if switch while for break continue return

 

控制语句用于控制程序的流程,以实现程序的各种结构方式。

它们由特定的语句定义符组成。C语言有9中控制语句,可分成以下3类。

目录

(一)条件判断语句

if语句

switch语句

(二)循环执行语句

while语句

do-while语句

for语句

(三)转向语句

break语句

continue语句

return语句

goto语句


(一)条件判断语句

C语言支持两种选择语句:if语句和switch语句。这些语句允许在程序运行时且知道其状态的情况下,控制程序的执行过程。

if语句是C语言中的条件分支语句,它能将程序的执行路径分为两条。if语句的完整格式如下:

if (condition)statement;
else statement

其中,if和else的对象可以是单个语句(statement),也可以是程序块;条件condition可以是任何返回布尔值的表达式;else语句是可选的。

if语句

if语句的执行过程如下:如果条件为真,就执行if的对象(statement1);否则,执行else的对象(statement2)。

statement也可以作为一个程序块:

int bytesAvailable;
if(bytesAvailable 0){
    ProcessDate();
    bytesAvailable -= n;
}
else
    waitForMoreDate();

这里,如果变量bytesAvailable大于0,则if块内的所有语句都会执行。

嵌套(nested)if语句是指该if语句为另一个if或者else语句的对象。

在使用嵌套if语句时,需要记住的要点是:一个else语句总是对应着和它同一个块中最近的if语句,而且该if语句没有与其他else语句相关联。下面是一个例子:

if(i == 10){
    if(j == 20) a = b;
    if(k ==100) c = d;  //这个if语句与下面紧跟的else相关联
    else a = c;
}
else a = d;             //这个else与最上面的if(i == 10)相关联

基于嵌套的if语句的通用编程结构被称为if-else-if阶梯。参

 

switch语句

C语言提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句。用switch语句直接处理多个分支(包括两个分支)。其一般形式为:

switch(表达式)
{
    case常量表达式1:
语句1;
break;
...
    case常量表达式2:
语句2;
break;
...
    case常量表达式3:
语句3;
break;
...
default:
语句 n + 1;
break;
}

switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较。若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行次case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的语句值都不相等,就执行default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句。

 

 

(二)循环执行语句

C++循环语句包括while语句、do-while语句和for语句等。

while语句

while语句实现“当型”循环,它的一般格式为:

while(termination){
    body;
}

当布尔表达式(termination)的值为true时,循环执行大括号中的语句,并且初始化部分和迭代部分是任选的。

while语句首先计算终止条件,当条件满足时,才去执行循环中的语句,这是“当型”循环的特点。

do-while语句

do-while语句实现“直到型”循环,它的一般格式为:

do{
    body;
}while(termination);

do-while语句首先执行循环体,然后计算终止条件,如果结果为true,则循环执行大括号中的语句,直到布尔表达式的结果为false。

与while语句不同的是,do-while语句的循环体至少执行一次,这是“直到型”循环的特点。

for语句

for语句也用来实现“当型”循环,它的一般格式为:

for(initialization;termination;iteration){
    body;
}

for语句执行时,首先执行初始化操作,然后判断终止条件是否满足。如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。

可以在for语句的初始化部分声明一个变量,它的作用域为一个for语句。

for语句通常用来执行循环次数确定的情况(如对数组元素进行操作),也可以根据循环结束条件执行循环次数不确定的情况。

在初始化部分和迭代部分可以使用逗号语句来进行多个动作,逗号语句是用逗号分隔的语句序列。

for循环中如果只有一句代码就不需要加大括号

 

(三)转向语句

转向语句包括break语句、continue语句、return语句及goto语句。此类语句尽量少用,因为这不利于结构化程序设计,滥用它会使程序流程无规律、可读性差。

break语句

break语句中断当前循环,和label一起使用,中断相关联的语句。一般格式为:

break[label];

可选的label参数指定断点处语句的标签

执行break语句会退出当前循环或语句,并开始执行脚本紧接着的语句。

continue语句

continue语句是跳过循环体中剩余的语句而强制执行下一次循环。其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

continue语句使用时应该注意:其只能用在循环语句中。一般都是与if语句一起使用。

 

return语句

return语句表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。

return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。

如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。

如果实在不需要函数返回什么值,就需要用void声明其类型。

注意:如果函数名前有返回类型定义,如int、double等就必须有返回值,而如果是void型,则可以不写return,但这时即使写了也无法返回数值。

 

goto语句

goto与家具也称为无条件转移语句,其一般格式如下:

goto语句标号;

其中,语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto语句配合使用。

C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用,可用来实现条件转义,构成循环、跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章