跳至正文
View Categories

2 min read

主要内容 #

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 << "查无此物";
}

习题 #

课后练习