【C语言总结】C语言语句总结

C语言语句总结


1.空语句


C语言最简单的就是空语句,本身只包含一个分号,空语句本身不执行任何任务


2.表达式语句


c并不存在专门的“赋值语句“,那么它的赋值就是一种操作,和加法减法一样,在表达式内部进行

x = y + 3;
ch = getchar()


这实际上是表达式语句,不是赋值语句


请考虑下面这条语句:

printf("hello world");


printf是一个函数,函数将会返回一个值,但是printf函数的返回值(它实际打印的字符数),我们通常并不关心,所谓语句没有效果,只是表达式的值被忽略。


printf函数所执行的是有用的工作,这类作用称为”副作用“。


3.代码块


代码块就是位于一对花括号之内的可选的声明和语句列表

{
     declatations;
     statements;
}


代码块可以用于要求出现语句的地方,它允许你在语法要求只出现一条语句的地方使用多条语句。代码块还允许你把

数据的声明非常靠近它所使用的地方


4.if语句

if(expression)
    statement;
else 
    statement;


括号是if语句的一部分,因此必须出现。


如果expression的值为真,那么就执行第一个statement,否则就跳过它,如果存在else子句,它后面的statement只有当expression为假的时候才会执行


C并不具备布尔类型,而是用整型代替——0表示假,非0值表示真


注:else子句从属于最靠近它的不完整的if语句。


5.while语句

while(expression)
      statement
循环的测试在循环体开始执行之前进行,所以如果测试的结果一开始就是假,循环体就不会执行。当循环体需要多条语句来完成任务的时候,可以使用代码块来实现

5.1break和continue语句

在while循环中可以使用break语句,用于终止循环,直接结束循环。


在while循环中可以使用continue语句,用于永久终止当前的那次循环,在执行完continue语句之后,执行流接下来就是重新开始while循环


在嵌套的循环内部,这两条语句只对最内层的循环起作用 


5.2while循环示意图

【C语言总结】C语言语句总结_第1张图片


6.for语句


C的for语句是while循环的一种极为常用的语句组合形式的简写法,语法如下所示:


for(experssion1; experssion2; experssion3)
       statement;

statement语句称为循环体,


experssion1是初始化部分,它只在循环开始执行时执行一次,


experssion2语句成为条件部分,它在循环体每次执行前都要执行一次,都像while语句中的表达式一样,


experssion3成为调整部分,它在循环体每次执行完毕,在条件部分即将执行之前执行。所有三个表达式都是可选的,都可以省略。


如果省略条件部分,那么表示测试的值始终为真。


在for语句中也有continue和break语句

 for语句的执行过程


 for语句的执行过程几乎和下面的while循环一摸一样


experssion1;
while(experssion2) {
        statement;
        experssion3;
}

 for语句和while语句执行过程的区别是在于出现continue语句时,在for语句中,循环直接会跳过循环体剩余部分,回到调整部分,在while语句中,如果有调整语句,它也是循环体的一部分,continue语句可能会直接跳过它


【C语言总结】C语言语句总结_第2张图片


for循环有一个风格上的优势,它把所有用于操作循环的表达式收集在一起,放在同一个地方便于观察寻找,


当循环体比较庞大时,这个优点更为突出。


7.do语句


do语句很像while语句,只是它的测试在循环体之后执行,而不是先于循环体执行,这种循环的循环体至少执行一次,它的语法如下:


do 
     statements;
while(experssion)
【C语言总结】C语言语句总结_第3张图片

如何在while循环和do语句之间进行选择呢?


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


8.switch语句


switch(experssion)
       statement


尽管switch语句体内只有一条单一的语句是合法的,但实际使用时的switch语句一般如下所示:


switch(experssion) {
     statement-list
}


穿于语句列表之间的是一个或多个case标签,形式如下:


case constant-experssion:

每个case标签必须具有一个唯一的值,常量表达式是指在编译期间进行求值的表达式,不能是任何变量。

 

8.1switch中的break语句


 如果在switch语句执行中遇到了break语句,执行流就会立即跳到语句列表的末尾。


break语句的实际效果是把语句列表划分为不同的部分;


在switch语句中,continue语句没有任何效果.


8.2default子句


在switch语句中,如果表达式的值与所有的case标签的值都不匹配的话,那么所有的语句都会被跳过,程序并不会终止,也不会提示

任何错误,因为这种情况在C中并不认为是个错误,所以:


我们在语句列表中增加一条default子句,写在任何一个case标签可以出现的位置,当switch表达式的值不匹配任何case语句的时候,

default子句后面的语句就会执行。每个switch语句中只能出现一条default语句.


9.goto语句


goto语句语法如下:


goto 语句标签


语句标签就是标识符后面加上个冒号,包含这些标签的goto语句可以出现在同一个函数的任意位置

goto语句是一种危险的语句,因为使用goto语句容易增加代码的复杂性


但是在一中情况下,即使是结构良好的程序,使用goto语句也非常合适——跳出多层嵌套的循环


while(condition1) {
     while(condition2) {
           while(condition3) {
                  if(some disaster)
                          goto quit;
           }
     }
}
quit:;


想要在这种情况下避免使用goto语句有两种方法,第一个方案是当你希望退出所有循环时设置一个状态标志,但这个标志必须在每个循环中进行测试


另一种方案是把所有的循环都放到一个单独的函数里,当你想离开最内层循环的时候,可以使用return语句离开这个函数

你可能感兴趣的:(C语言总结)