分支结构
分支结构:又被称之为选择结构
概念
选择结构:根据条件成立与否,选择相应的操作
条件建构
- 关系表达式:含有关系运算符的表达式(<,>,>=,<=,!=,==)
- 逻辑表达式:含有逻辑运算符的表达式(&&,||,!),往往用来构建复杂的符合条件:
比如:
- 常量/变量:值是否非0,取值(0|1)
注意:类似以下写法,没有意义
if(x+y)//编译通过,但没有实际意义,不建议这样写
选择结构的形式
单分支
语法:
if(条件表达式)
{
语句1;
}
说明:条件表达式成立,执行语句一,否则跳过该分支结构
例子:
双分支
语法:
if(条件表达式)
{
语句1;
}
else
{
语句2;
}
说明:条件表达式成立,执行语句1,否则执行语句2。双分支不管条件是否满足,都要执行。
例子:
三目运算符
语法:
表达式1 ? 表达式2 : 表达式3;
说明:?: 条件运算符,主要可以简化双分支为同一变量赋值的操作。
求值过程:
先计算
表达式
1
的值,非
0
,则将
表达式
2
的结果作为条件运算符的最终结果;否则将
表达
式
3
的结果作为
条件运算符
的
最终结果
。
举例
多分支
语法:
if(条件1)
{
语句1;
} else if(条件2)
{
语句2;
}
...
else
{
语句n+1;
}
举例:
swith
语法:
switch(表达式) // 不能是布尔型和 浮点型
{
case 常量表达式1:
语句体1;
break;
case 常量表达式2:
语句体2;
break;
...
case 常量表达式n:
语句体n;
break;
default:
语句体n+1;
break;
}
说明:
⑴
switch
后括号内的表达式可以是任何类型的表达式;
⑵ 若表达式的值与某个常量表达式的值相等时,执行此
case
后面的语句;若没有相等的值时,执行 default后面的语句;
⑶ 每个
case
后面的常量表达式的值都必须不相同,否则出现矛盾;
⑷ 各个
case
和
default
出现的次序不影响执行结果;
⑸
case
后面的语句中如果没有
break
语句,则执行完本
case
后的语句会接着执行下面的
case
(
case
穿透) ;
⑹ 多个
case
可共用一组语句。
注意:
1.
表达式一般写一个变量,变量的值是一个确定的常量。
2.
当遇到
break
或者
switch
语句的右大括号时,
switch
语句结束。
3.
表达式中的数据类型:
char
,
short
,
int
,
long
,
long long
,不能是浮点型。
表达式和常量的数据类型要一致(支持隐式转换),比较是否相同
举例:

switch
语句的
case
穿透:
1. case
穿透:当
case
后的
break
被省略;就会直接执行它后面紧跟的
case
中的语句(不会判断表达式是否和它后面的case
常量是否相同),这样的现象称之为
case
穿透。
2. default
语句一般放在所有
case
之后,表明所有的
case
都不成立时,执行
default
中的语句;
default
语句可以放在switch
语句
{}
内的任意位置。
总结
如果只需要一个判断结果,使用
单分支
如果需要两个判断结果,且只能有两个判断结果,使用
双分支
如果需要判断
N
个结果中的某几个,或者所有,使用
多分支
条件表达式中的运算符优先级
逻辑非(!)
>
算数运算符 (
+-*/%
)
>
关系运算符(
> < >= <= !=
==
)
>
逻辑运算符(
&&
、
||
)
>
赋值运算符(=
、
+=
)