空语句:C最简单的语句就是空语句,它本身只是包含一个分号。空语句本身并不执行任何任务,但有时还是有用的。所适用的场合就是语法要求出现一条完整的语句,但不需要它指向任何任务。
C并不具备专门的赋值语句,而是统一用”表达式语句”代替。
所谓语句”没有效果”只是表示表达式的值被忽略。printf函数所执行的是有用的工作,这类作用称为”副作用”(side effect)。
代码块就是位于一对花括号之内的可选的声明和语句列表。
C不具备布尔类型,而是用整型来代替——**零值表示”假”,非零值表示”真”**。
当if语句嵌套出现时,else子句从属于最靠近它的不完整的if语句。
在while循环中可以使用break语句,用于永久终止循环。在执行完break语句之后,执行流下一条执行的语句就是循环正常结束后应该执行的那条语句。
在while循环中也可以使用continue语句,它用于永久终止当前的那次循环。在执行完continue语句之后,执行流下来就是重新测试表达式的值,决定是否继续执行循环。
这两条语句的任何一条如果出现于嵌套的循环内部,它只对最内层的循环起作用,你无法使用break或continue语句影响外层循环的执行。
流程图简要说明:菱形表示判断,方框表示需要执行的动作,箭头表示它们之间的控制流。
for语句
statement为循环体,expression1为初始化部分,它只在循环开始时执行一次。expression2为条件部分,它在循环体每次执行前都要执行一次,都像while语句的表达式一样。expression3为调整部分,它在循环体每次执行完毕,在条件部分即将执行之前执行。所有三个表达式都是可选的,都可以省略。如果省略条件部分,表示测试的值始终为真。
do语句
它的测试在循环体执行之后才进行,而不是先于循环体执行。所以,这种循环的循环体至少执行一次。
do语句执行流
switch语句
其中expression的结果必须是整型值。贯穿于语句列表之间的是一个或多个case标签。形式如下所示:
每个case标签必须具有一个唯一的值。常量表达式(constant-expression)是指在编译期间进行求值的表达式,它不能是任何的变量。
switch语句的执行过程:首先是计算expression的值;然后,执行流转到语句列表其中其case标签值与expression的值匹配的语句。从这条语句起,直到语句列表的结束也就是switch语句的底部,它们之间所有的语句均被执行。
switch语句的执行中遇到了break语句,执行流就会立即跳到语句列表的末尾。在switch语句中,continue语句没有任何效果。
default语句:写在任何一个case标签可以出现的位置。当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会被执行。所以,每个switch语句只能出现一条default子句。
goto语句
要使用goto语句,必须在希望跳转的语句前面加上语句标签。语句标签就是标识符后面加上个冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。goto语句较为适用的场景就是跳出多层嵌套的循环。如下所示:
C并不具备任何输入/输出语句;I/O是通过库函数实现的。C也不具备任何异常处理语句,它们也是通过调用库函数来完成的。
switch语句中,如果没有default子句,当表达式的值与所有case标签的值均不匹配时,整个switch语句将被跳过,不会执行。