1.2.3.2 if语句、switch语句、多层条件语句

  1. if 语句

if 语句分为单分支和双分支两种形式。

(1) 单分支,即如果表达式的值为真,则其后的语句块被执行;否则,其后的语句块略过。

int a, b, max;
scanf("%d %d", &a, &b);  // 读入两个数值,分别赋给a和b
max = b;  // 假设b最大
if (a > b)
    max = a;  // 如果a>b,那么更改max的值
printf("%d 和 %d 的较大的值是:%d\n", a, b, max);

(2) 双分支,即如果表达式的值为真,则其后的语句块被执行;否则,执行 else 后的语句块。

int a, b, max;
scanf("%d %d", &a, &b);  
if (a > b)
    max = a;  
else
    max = b;
printf("%d 和 %d 的较大的值是:%d\n", a, b, max);

if-else 语句也可以同时使用多个,构成多个分支,语法如下。

if (表达式1)
{
    语句块1
}
else if (表达式2)
{
    语句块2
}
else if (表达式3)
{
    语句块3
}
...
else if (表达式n)
{
    语句块n
}
else
{
    语句块n + 1
}
  1. switch 语句

switch 语句适用于表达数量较多的分支条件,语法如下。

switch (表达式)
{
    case 常量表达式1: 语句块1
    case 常量表达式2: 语句块2
    ......
    default: 语句块n
}

switch 语句可以包含多个 case 条件,case 后面的常量表达式必须各不相同。进入 switch 语句后,先计算表达式的值,然后逐一匹配每个 case 的常量表达式,当匹配成功时,执行对应的语句块,然后顺序执行之后的所有语句,直到整个 switch 语句结束。如果遇到一个 break 语句,则中止 switch 语句的执行。如果表达式与所有的 case 都不能成功匹配,则执行 default 后面的语句块,直到 switch 语句结束。

break是专门用于跳出类似switch的分支和其他循环结构的语句。“跳出”是指一旦遇到break,就不再执行 switch 中的其他语句,包括当前分支中的语句和其他分支中的语句。

default 负责处理不符合任何 case 的情况,而且 switch 语句中只能有一个 default 分支,它可以出现在开头或者结尾,也可以出现在两个 case 的中间,但 switch 语句中不是必须出现 default 选项的。

  1. 多层条件语句 条件语句可以层层嵌套,形成多层条件语句。