1. 空语句
C 最简单的语句就是空语句,它本身只包含一个分号。空语句本身并不执行任何任务,但有时还是有用。它所适用的场合就是语法要求出现一条完整的语句,但并不需要它执行任何任务。
2. 表达式语句
例如:x = 3;
ch = getchar( );
C 中并不存在专门的“赋值语句”,赋值其实就是一种操作,就相当于运算法则一样,所以赋值就在表达式内进行,只要在表达式后加上分号,就可以将表达式转变为语句。
注:x+3;也是完全合法的语句,知识被执行时,表达式被求值,但它们的结果并不保存于任何地方。
3. if语句
语法如下:
if( expression )
statment
else
statment
括号是if语句的一部分,而不是表达式的一部分,因此它是必须出现的,即使是那些极为简单的表达式也是如此。
注:else子句从属于最靠近它的不完整的if语句。花括号的使用。
4. while语句
语法如下:
while( expression )
statement
循环的测试在循环体开始执行之前进行,所以如果测试的结果一开始就是假,循环体就根本不会执行。
4.1. break和contin
在while循环中可以使用break语句,用于永久终止循环。在执行break语句之后,就执行循环正常结束应该执行的语句。
在while循环中也可以使用continue语句,它用于永久终止当前的那次循环。在执行完continue语句之后,执行接下来重新测试表达式的值,决定是否继续执行循环。
注:这两条语句的任何一条如果出现在嵌套的循环内部,它只对最内层的循环起作用,无法使用break或continue语句影响外层循环的执行。
5. for语句
语法如下:
for( expression1; epression2; expression3; )
statement
其中的statement称为循环体,expression1为初始化部分,它只在循环体开始执行一次。expression2称为条件部分,它在循环体每次执行前都要执行一次,都像while语句中的表达式一样。expression3称为调整部分,它在循环体每次执行完毕,在条件部分即将执行之前执行。
所有三个表达式都是可选的,都可以省略。如果省略条件部分,表示测试的值始终未真。
在for语句中也可以使用break和continue语句。
6. do语句
C 语言的do语句非常像其他语言的repeat语句,它很像while语句,知识它的测试在循环体执行之后才执行,而不是先于循环体执行。所以,这种循环的循环体至少执行一次。
语法如下:
do
statement
while( expression );
注:当需要循环体至少执行一次时,选择do。
7. switch语句
C 的switch语句类似于其他语言的case语句,但是其中expression的结果必须是整数值。语法如下:
switch( expression )
statement
尽管在switch语句体内只使用一条单一的语句也是合法的,但这样做显然毫无意义。实际使用中的switch语句一般如下:
switch( expression ) {
statement-list
}
贯穿与语句列表之间的一个或多个case标签,形式如下:
case constant-expression
每个case标签必须具有一个唯一的值。
7.1. switch中的break语句
在switch语句的执行中遇到了break语句,执行流就会立即跳到语句列表的末尾。break语句的实际效果是把语句列表划分为不同的部分。
7.2. default子句
如果不想忽略不匹配的所有case标签的表达式时,可以在其中加一条default子句。如下:
default:
每个switch语句中只能出现一条default子句。但是,它可以出现在语句列表的任何位置,而且语句会像贯穿一个case标签一样贯穿default子句。
8. goto语句
语法如下:
goto 语句标签
要使用goto语句,必须在希望跳转的语句前面加上语句标签。语句标签就是标识符后面加个冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。
总结:
1. 在一个没有循环体的循环中,用一个分号表示空语句,并让它独占一行。
2. for循环的可读性比while强,因为它把用于控制循环的表达式收集起来放在一个地方。
3. 在每个switch语句中都使用default子句。