0%

C语言 语句

语句

C语言中有很多的语句:空语句、表达式语句、代码块、if语句、while语句、break和continue语句、for语句、do语句、switch语句、switch中的break语句、default子句、goto语句。

基本上,C语言实现了其他现代高级语言所具有的所有语句。

if语句

在C的if语句和其他语言的if语句中,只存在一个差别:就是C不具备布尔类型,而是用整型来代替。

对于if-else配对的问题,else字句从属于最靠近它的不完整的if语句。

break和continue语句

在while语句中,使用break语句可以永久终止循环,而使用continue语句,用于永久终止当前的那次循环。这两条语句的任何一条如果出现于嵌套的循环内部,它只对最内层的循环起作用,你无法使用break或者continue语句影响外层循环的执行。

while语句的执行过程

有时while语句在表达式中就可以完成整个语句的任务,于是循环体就无事可做,此时单独用一行表示一条空语句是比较好的做法,比如:

1
2
while((ch = getchar() ) != EOF && ch != ‘\n’)
;

for语句

for语句的形式为:

1
2
for (expression1; expression2; expression3)
statement;

其中expression1称为初始化部分,expression2称为条件部分,expression3称为调整部分。
与上述for语句相同意义的while语句:

1
2
3
4
5
6
expression1;
while(expression2)
{
statement;
expression3;
}

从上面两个语句的对比,我们可以看出,for循环有一个风格上的优势,就是把所有用于操纵循环的表达式收集在一起,放在同一个地点,便于寻找。
do语句

   当你需要循环体至少执行一次时,选择do语句。

switch中的break语句

switch语句中的执行中遇到了break语句,执行流就会立即跳到语句列表的末尾。而break语句的实际效果是把语句列表划分为不同的不同,这样,switch语句就能够按照更为传统的方式工作。其实如果这样的话,那么最后一个语句就不用添加break了,但是还是加上了break,主要是在以后的维护中,如果维护人员添加代码而忘记了break就有可能影响程序的效果。
default子句

对于switch中的default语句,我一直认为要放在最后,但是测试了一下,发现default可以出现在任何一个case标签出现的地方而不仅仅是最后。

switch语句的执行过程

对于符合多个case的情况,最好写上注释,防止在检查的时候额外加上了break而导致出现bug。

goto语句

goto语句可以出现在函数中的任何一个位置,这种无序的跳转是很危险的,所以,如果有其他方法搞定,最好少用goto语句。

当然,针对跳转出多层嵌套,goto确实是一种比较方便的方法。当然可以使用一个标志值,来跳转出所有的循环,或者将所有的循环放在一个函数中,直接使用return来跳出。对于设置标志值,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum {EXIT,OK} status;

status = OK;
while(status == OK && condition1)
{
while(status == OK && condition2)
{
while(status == OK && condition3)
{
if(something wrong)
status = EXIT;
break;
}
}
}

总结

另外还需要注意:C并不具备任何的输入输出语句,IO是通过调用库函数实现的,C也不具备任何异常处理语句,它们也是通过调用库函数来完成的。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道