主要内容 #
1. if 的基本结构总结 #
先复习一下 if 的基本结构
if() {...} if() {...} else {...} if() {...} else if {...} if() {...} else if {...} else {...}
if 有很多衍生的语法。这些衍生语法的核心目标,都是为了简化写法。
这也意味着,if 是最基本的语法。
其他衍生出来的语法,都可以被 if 改写。
我们接下来,梳理一下那些衍生的语法点。(它们都可以理解为 if 的简化语法)
2. 三目运算符 #
形如:
if (a>0) b = a; else b = a; // ---- 可以改写为 ----> b = a>b ? a:b;
这就是“问号” 运算符。
它的基本形式为:
条件 ? 选项1 : 选项2; /* 如果条件成立。则表达式的值为选项1,否则是选项2 */
3. switch #
3.1 多分支情形 #
某公司的无人超市准备开业了,希望请你帮忙写一个程序查询货物的价格,请口头简述一下思路。
示例程序:
if(ID==0) cout << "苹果10元"; else if(ID==1) cout << "杯子15元"; else if(ID==2) cout << "芒果20元"; ...
类似的结构,可以用 C++ 中的 switch 语句改写:
switch(ID) { case 0: cout << "苹果10元"; break; case 1: cout << "杯子15元"; break; case 2: cout << "芒果20元"; break; case 3: cout << "西瓜12元"; break; ... default:cout << "查无此物"; }
3.2 ID 的说明 #
switch(ID) { case 0: cout << "苹果10元"; break; case 1: cout << "杯子15元"; break; case 2: cout << "芒果20元"; break; case 'A': cout << "这是字符 A "; break; ... default:cout << "查无此物"; }
- ID 必须是一个整型变量、或者返回整数的表达式。
- ID 可以是负数
- ID 也可以是字符
3.3 case 的说明 #
- 结构(case 数字: )中,请注意最后有冒号;
- case 0: 表示 ID==0 成立的情况;
- case 1: 表示 ID==1 成立的情况;
- case 可以不从0开始;
- case 可以是负数;
- case 不需要按照数值顺序排序
3.4 关于 break 的说明 #
break 表示退出当前语句。
之前,我们是在 循环 中使用,这里表示退出 switch 。
为什么需要 break 呢?这要从 switch 语句的运行逻辑讲起。
# 没有 break 的情况 # #
switch(ID) { case 0: cout << "苹果10元"; case 1: cout << "杯子15元"; case 2: cout << "芒果20元"; case 3: cout << "西瓜12元"; ... default:cout << "查无此物"; }
# 有 break 的情况 # #
switch(ID) { case 0: cout << "苹果10元"; break; case 1: cout << "杯子15元"; break; case 2: cout << "芒果20元"; break; case 3: cout << "西瓜12元"; break; ... default:cout << "查无此物"; }
# 这种逻辑存在的原因 # #
请看下面说明:
/* 当我们改变一下商品的价格: 编号 价格 0 10 1 10 2 15 3 10 此时,可以这样设计代码 */ switch(ID) { case 0: // 请注意理解这里的逻辑 case 1: case 3: cout << "10元"; break; case 2: cout << "15元"; break; ... default:cout << "查无此物"; }
- 请注意 case 的顺序,0 1 3 共享同一个处理语句
3.5 关于 default 的说明 #
default 单词是“默认”的意思。也就是相当于 else 一样。
- 写在末尾,所以不需要 break。
- 只能有一个 default。
- 可以省略 default。
- 注意不要忽略了冒号。
3.6 分行 #
一般也可以写作如下形式“
switch(ID) { case 0: cout << "有多行程序时"; cout << "更推荐这样的写法"; cout << "10元"; break; case 2: cout << "15元"; break; ... default:cout << "查无此物"; }