学习《C++程序设计》(第二版) 谭浩强 主编
第三章 程序设计初步
3.7 选择结构和if语句
3.7.1 if语句的形式
3.7.2 if语句的嵌套
3.7.3 条件运算符和条件表达式
3.7.4 多分支选择结构与switch语句
3.7.5 编写选择机构的程序
if语句是用来判定所给定的条件是否满足,根据判定的结果来决定执行给出的两种操作之一
3.7.1 if语句的形式
C++的if语句的一般形式为:
if (表达式) 语句 1
[else 语句2]
语句1,2可以是简单地语句,也可以是复合语句,也可以是内嵌的if语句
在C++中if语句是实现选择结构的主要的语句
在执行if语句时先对表达式求解,若表达式的值为非0,则按真处理
3.7.2 if语句的嵌套
if与else的配对关系:else总是与它上面最近的、且未配对的if配对
如果if与else的数目不一样,为实现程序设计者的企图,可以加花括号来确定配对的关系
3.7.3 条件运算符和条件表达式
若在if语句中,当被判别的表达式的值为真或假时,都执行一个赋值语句且给同一个变量赋值时,可以用简单的条件运算符来处理
例如:如果有下面的if语句
if (a>b) max=a;
else max=b ;
可以用条件运算符(? :)来处理:
max= (a>b) ? a : b ;
其中,“ (a>b) ? a : b ” 是一个“条件表达式”;
如果(a>b)为真,则条件表达式的值就取a,否则取b
条件运算符要求有3个操作对象,称三目(元)运算符,它是C++中唯一的一个三目运算符
条件表达式的一般形式为:
表达式1 ? 表达式2 : 表达式3
条件运算符优先于赋值运算符
表达式2和表达式3的数据类型可以不一致
3.7.4 多分支选择结构与switch语句
一般形式:
switch(表达式)
{ case 常量表达式1:语句1
case 常量表达式2:语句2
...........
case 常量表达式n:语句n
default :语句 n+1
}
说明:
1.switch后面括号内的表达式,可以是数值类型(包括字符类型)数据
2.当switch表达式的值与某一个case子句中的常量表达式的值相匹配时,就执行此case子句中的内嵌语句
若所有的case子句中的常量表达式的值都不能与switch表达式的值匹配,就执行default子句的内嵌语句
3.各个case和default的出现次序不影响执行结果
4.执行完一个case子句后,流程控制转移到下一个case子句继续执行
“case常量表达式”只是起语句标号的作用,并不是在该处进行条件判断
在执行switch语句时,根据switch表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断
因此,应该在执行一个case子句后,使流程跳出switch结构,即终止switch语句的执行,可以用一个break语句来达到此目的
在case子句中虽然包含一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行case子句中所有的执行语句,当然加上也行
多个case可以共用一组执行语句
3.7.5 编写选择结构的程序