3.12条件通算符“?:” i£语句在某些情况下可以用条件运算符“?:〃 来简化表达。“?:〃是一个三元运算符,其构成的 表达式格式为:<表达式1>?<表达式2>:<表 达式3>执行逻辑:先计算表达式1,若其值为真 (或非0),则计算表达式2(不计算表达式3), 并将该值作为整个表达式的值;反之,即表达式1 的值为假或为0,则计算表达式3(不计算表达式 2),并将该值作为整个表达式的值。例如: int a=6,b=7, min=a<b?a: b; //min=6 min=a<b?++a: ++b; //min=7 a=7 b=7 in=a<b?a++:b++;//min=6a=7b=7 k
ok 3.1.2 条件运算符“?:” if语句在某些情况下可以用条件运算符“?:” 来简化表达。 “?:”是一个三元运算符,其构成的 表达式格式为:<表达式1> ? <表达式2> : <表 达式3>执行逻辑:先计算表达式1,若其值为真 (或非0),则计算表达式2(不计算表达式3), 并将该值作为整个表达式的值;反之,即表达式1 的值为假或为0,则计算表达式3(不计算表达式 2),并将该值作为整个表达式的值。例如: int a=6,b=7,min=a<b?a:b; //min=6 min=a<b?++a:++b; //min=7 a=7 b=7 min=a<b?a++:b++; //min=6 a=7 b=7 ok
3.1.3 switch语句 用嵌套主£语句可以实现多选一的情况。另外C++中 还提供了一个 switch语句,称为开关语句,也可以 用来实现多选一: switch(表达式) case常量表达式1:《语句序列1;》《 break;》 case常量表达式2:《语句序列2;》《 break;》 冈case常量表达式n:《语句序列n;》《 break;》 《 default:语句序列n+1;》
ok 3.1.3 switch语句 用嵌套if语句可以实现多选一的情况。另外C++中 还提供了一个switch语句,称为开关语句,也可以 用来实现多选一: switch (表达式) { case常量表达式1:《语句序列1;》《break;》 case常量表达式2:《语句序列2;》《break;》 …… case常量表达式n:《语句序列n;》《break;》 《default:语句序列n+1;》 }
switchs语句格式 (1)各个case(包括defa1t)分支出现的次序 可以任意,通常将 defau1t放在最后 (2) break语句可选,如果没有 break语句,每 个case分支都只作为开关语句的执行入口,执行 完该分支后,还将接着执行其后的所有分支。因此, 为保证逻辑的正确实现,通常每个case分支都与 司 break语句联用。 心(3)每个常量表达式的取值必须各不相同,否则 将引起歧义 k
ok switch语句格式 (1)各个case(包括default)分支出现的次序 可以任意,通常将default放在最后。 (2)break语句可选,如果没有break语句,每 一个case分支都只作为开关语句的执行入口,执行 完该分支后,还将接着执行其后的所有分支。因此, 为保证逻辑的正确实现,通常每个case 分支都与 break语句联用。 (3)每个常量表达式的取值必须各不相同,否则 将引起歧义
(4)允许多个常量表达式对应同一个语句序列。 例如: char score cin>>scorei switch(sc。re) case A′: case a: cout<< excellent break i case\B′: case b:cout<<"good; break default: cout<<fairI (5)从形式上看,swch语句的可读性比嵌套if 语句好,但不是所有多选一的问题都可由开关 语句完成,这是因为开关语句中限定了条件表 ok达式的取值类型
ok (4)允许多个常量表达式对应同一个语句序列。 例如: char score; cin>>score; switch (score) { case ‘A′: case ‘a′: cout<<″excellent″; break; case ‘B′: case ‘b′: cout<<″good″; break; default: cout<<″fair″; } (5)从形式上看,switch语句的可读性比嵌套if 语句好,但不是所有多选一的问题都可由开关 语句完成,这是因为开关语句中限定了条件表 ok 达式的取值类型
switch语句例子 【例3.6】运输公司对所运货物实行分段计费 设运输里程为s,则运费打折情况如下: s<250 不打折扣 250<=s<500 2号折扣 500<=s<1000 5号折扣 1000<=s<2000 8号折扣 2000<=s<3000 10号折扣 3000<=s 15号折扣 设每公里每吨的基本运费为p,货物重量为w,折扣 为d,则总运费f为:f=p*w*s*(1-d) 设计程序,当输入p、w和s后,计算运费f
ok switch语句例子 【例3.6】 运输公司对所运货物实行分段计费。 设运输里程为s,则运费打折情况如下: s<250 不打折扣 250<=s<500 2%折扣 500<=s<1000 5%折扣 1000<=s<2000 8%折扣 2000<=s<3000 10%折扣 3000<=s 15%折扣 设每公里每吨的基本运费为p,货物重量为w,折扣 为d,则总运费f为:f=p*w*s*(1-d) 设计程序,当输入p、w和s后,计算运费f