空语句

C 最简单的就是空语句, 本身只包含一个分号. 用于一些要求一条语句, 但并不 需要执行任务的时候

while ((ch = getchar()) != EOF)
   ; /* 空语句 */

表达式语句

赋值是一种操作, 和加减法一样在表达式内进行, 只要在表达式后面加上一个分号, 就可以把表达式转变为语句.

a++;

++ 操作符增加变量 a 的值, 这就是它的 副作用(side effect)

代码块

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

{
    declarations
    statements
}

if 语句

语法如下

if (expression)
    statement
else
    statemnt
括号是 if 语句的一部分, 而不是表达式的一部分, 因此它必须出现.

while 语句

while (expression)
    statement

break 和 continue 语句

break 语句用于永久终止循环

continue 用于永久的终止当前的那次循环

这两条语句只对内层的循环起作用, 无法影响外层循环

while 语句执行过程

for语句

for (expression1; expression2; expression3)
   statement

其中 statement 为循环体, expression1 为 初始化 部分, 它只在循环开始时执行 一次, expression2 称为 条件 部分, 它在每次循环前走执行一次, 满足条件则继续 执行循环体. expression3 称为 调整 部分, 它在循环体每次执行完毕, 在条件部分 即将执行之前执行. 这个三个表达式都是可选的. 如省略条件, 则测试条件始终未真

for 语句中也可以使用 break 和 continue 语句.

do语句

do
    statement
while(expression);

do 和 while类似, 只是它的测试在循环体执行之后才进行.

switch语句

switch(expression)
    statement

贯穿语句列表之间的是一个或多个 case 标签:

    case constant-expresion:
每个case标签必须具有一个唯一的值. 常量表达式(constant-expression)是指在 编译期间进行求值的表达式, 它不能是任何变量.

switch 语句执行过程中, 首选计算 expression 的值; 然后与 case 标签 值与 expression 的比对, 执行与之匹配的 case 标签的语句

switch 语句执行中若遇到 break 语句, 执行流则会立即跳到语句列表的末尾.

当 switch 表达式的值不匹配所有 case 标签的值时, default 子句后面 的运距会被执行. 每个 switch 语句中放上一条 default 子句是个好习惯

goto 语句

要使用 goto 语句, 你必须在你希望跳转的语句前面机上语句标签.语句标签 就是标识符后面加个冒号

label:

包含这些标签的 goto 语句可以出现在同一函数的中的任何位置.

goto 语句对于跳出多层嵌套的循环也可能非常合适

while (condtion){
    while(condition2){
        while(condition3){
            if (some disater)
                goto quit;
        }
    }
}
quit: ;

编程提示

  1. 在一个没有循环体的循环中, 用一个分号表示空语句, 并让它独占一行
  2. for 循环的可读性币 while 循环强
  3. 在每个 switch 语句中都使用 default 子句