• 判断
  • 循环
  • 顺序

    判断

    C 语言把任何非零非空的值假定为 true,把null 假定为 false

    if

    if与if-else

    if:if(判断) {为真时语句} 只有一句语句时可以不需要{}
    if-else:在if基础上增加 else {为假时语句} 只有一句语句时也可以省略{}

    if-else-if-else

    一个 if 语句后可跟一个可选的 else if…else 语句

  • 一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。

  • 一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
  • 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

    switch

    switch(变量){
    case 变量值:执行语句;[break;]
    case 变量值:执行语句;[break;]
    ...
    [default: 都不满足时执行的语句]

  • 变量必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。

  • 变量值必须是一个常量或者字面量 如case的变量值是一个变量,则出错
  • 如果一个case没有break,则继续执行下一个case。不会退出

嵌套if与嵌套switch


循环

while

while(判断/表达式){执行语句} 为表达式时只要表达式为非零值,即为true
循环可以这样写 while(i++){…}

do-while

do{
执行语句
}
while(判断或者表达式);
类似while,但是while可能一次都不执行。而do-while至少执行一次

for

for ([变量]; [判断]; [更新变量] )
{
执行语句
}

  • 只省略判断时,无限循环
    • 所以三个参数都省略时:无限循环
  • int i; for( ;i<5;i++)``=for(int i=0;i<5;i++)=int i=0;for(i;i<5;i++)

注意只有在c99标准中才允许for中定义!c11也可以,但是c11是c++标准;c99才是c标准
非c99标准虽然不能for中定义,但是可以for中赋值 如int i;for(i=0)
以上不赋值也可以,因为int型默认值为0.其他举一反三

  • 省略更新变量时则只执行一次或者因为判断为假直接不执行

  • break:直接退出整个循环 除了循环还可以用于switch中
  • continue:跳过当前一轮循环
  • goto:将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。