2022-10-26

C程序经常需要多次检查同一个值,并且在每一种情况中执行非常类似的代码片段。

可以使用一连串的if语句,这没有错,但对于这种逻辑,C语言提供了替代的写法。

C语言可以用switch语句进行逻辑测试。

switch语句

为了避免写许许多多的if语句,C语言提供了另一种选择: switch语句。

switch语句和if语句有些像,但switch可以测试一个变量的多种取值

当计算机遇到switch语句,它会检查给出的值,然后寻找匹配的case.找到后,它会运行case之后的所有代码直到遇到break语句。计算机会一直运行下去直到有人吩咐它退出switch语句。

漏掉break会让代码出错。

大部分C程序在每个case段的末尾都有一条break语句,这样做虽然会有失效率,但可以提高代码的可读性。

switch语句可以取代一连串的if语句。

switch语句检查一个单独的值。

计算机会在第一个匹配的case语句处开始执行代码。

在遇到break或到达swi tch语句的末尾前,代码会一直运行。

核对是否把break放对了地方,否则switch语句就会出错。

为什么要用switch语句取代if当需要多次检查同一变量时,使用switch语句会更方便。

使用switch语句让代码更清晰,一段代码处理一个变量的结构,结构一目了然,相反,一连串的if语句就没那么清晰了,可以用下落逻辑在不同的分支之间复用代码。

switch语句不但可以检查变量switch语句还可以检查两个值是否相等。

switch语句不能检查字符串或任何形式的数组,switch语句只能检查值。

在C语言中使用while循环

C语言中最基本的循环结构是while循环,只要循环条件一直为真,while循环就会一次又一次、周而复始地运行代码。

while (<某个条件>) 【在运行循环体前检查条件。】

{

【循环体在花括号里。】

.../*在这里做-些事情*/

【如果循环体中只有一行代码,你可以不加花括号。】

}当程序执行到循环体的末尾,计算机就会检查

循环条件是否仍为真。如果是,就会再次执行

循环体中的代码。

while循环还有一种形式,它总是在循环体运行后才检查循环的条件,也就是说循环体至少会被执行一次,我们叫它do...while循环:

do {

/*买彩票 */

} while (have_not_won) ;

这个例子是一个从1数到10的while循环:

int counter = 1;【这是循环启动代码】

while(counter < 11) 【这是循环条件】

printf ("%i个枣\n", counter);

【这是循环更新代码,它用来在循环体的末尾更新计数器。】counter++;【别忘了,counter++表示“counter变量的值加1”】

所有循环都是这样的三部曲:首先为循环准备变量,其次在每一轮的循环前检查条件,最后在循环末尾更新计数器或实现类似功能。

因为这个模式是通用的,C语言有for循环,

for循环可以让代码看起来更简洁。同样的代码如果用for循环来写:

int counter ;

for (counter = 1; counter < 11;【这是每次循环执行前对条件进行检查的代码】 counter++)【这是每次循环后运行的代码】

{

printf ("%i个枣\n", counter) ;

}【因为循环体中只有一行代码,可以去掉花括号。】

C语言大量使用for循环,至少要和while循环用得一样多。for循环不但可以减少代码的行数,而且便于其他C程序员阅读,因为所有用来控制循环的代码—控制counter变量值的代码—现在都放到了for语句中,井从循环体中分离了出来。

但如果想在循环中的某个地方跳出循环可以使用break语句直接跳出循环:

while (feeling_hungry)

{

eat_cake () ;

if (feeling_queasy)

/*从while循环中跳出*/

break;【"break"直接跳出循环】

}

drink_coffee () ;

}

break语句可以直接退出当前循环,跳过循环体中break之后的所有语句。break非常有用,因为它有时是结束循环最简单有效的方法,但应该避免滥用break,因为会降低代码的可读性。

用comtinue继续循环

如果想跳过循环体的其余部分,然后回到循环的开始,那么可以使用continue语句

while(feeling_hungry)

{

if(not_lunch_yet)

{

/*回到循环条件*/

continue ;【continue”带你回到循环的开始】

eat_cake () ;

}

break不能从if语句中退出

你可能感兴趣的:(2022-10-26)