第 4 讲:if 条件语句
关键字的用法
接下来,我将为你讲解的是一种新的执行语法模式:条件判断。
在前文的介绍里,我们可以使用运算符和类型声明的表达式,来获取一些数据的数值,并输出。但整个程序的写法格式是这样的:
if 条件判断。if
可以根据注释内容看到,只要条件满足要求的,将会走第一个大括号的内容;如果不满足要求,将会走第二个大括号的内容。例如
可以从这里看到,显然 a + b 结果是大于 4 的,所以满足条件,故 c 的结果应为 a + b,输出的结果就是 5。当然,这里就需要你学习一些语法约定和书写格式规范。当 if 和 else 块里只有一句话的时候,大括号是可以省略的,但最好使用缩进格式书写,分清楚层次,这样可以轻松辨别代码的逻辑和控制的部分,即:
三目运算符:条件运算
我们可以使用三目运算符 ?: 来判别一个结果。类似上文的逻辑,在 ? 前面写条件,在 ? 和 : 之间写条件成立的时候的结果,而 : 后写条件为假的时候的结果。如:
这样就把之前的 if-else 判断模式简写为这样。它们是等价的。
嵌套 if
之所以之前叫大家将 if 内部的执行内容进行缩进,是因为 if 的执行逻辑是可以嵌套的。
类似于上述逻辑,我们可以先看条件判断。由于 a + b 的结果是 5 而不是 3,所以它只能走 else 这一部分的执行内容。于是得到 c 为 0,所以输出结果为 0。
串联 if
有时候,当分支不止一个的时候,我们可以使用把 if 的声明串联的模式来执行一些操作。
a == 2 条件的 else 部分就只有一句话,我们可以省略这一个大括号;而且 c == 3 条件里的 else
不过,还是很丑陋。不过我们发现,既然 else 和 if 语句还有 else
这样不就很好看了吗。这个写法就是 if 串联的写法。
嵌套 if 时的三目运算
前文用到的这个示例
可以被简写为
(a - b == 3 ? a * b : a / b)
数值条件
最后要说明一下的是,任意一个整数数值都可以作为条件使用,写在 if 语句的小括号里。在前文里,我们说到,一个整数数值,只要它不是 0,我们就认为这个数值表示的条件是“正确的”的意思,而是 0 则表示这个条件是“不成立的”、“错误的”的意思。所以,如果我们想要把一个数值作为真假两种情况的判断的话,我们可以这么写:
这样,你就能得到 17 is a prime 的输出信息。当然,你甚至也可以为 isPrime 变量的条件处添加前缀取反符号 ! 来表示逻辑取反。
不过,从这个角度来看,isPrime 单独作为条件,可以等价用判断语句表示为 isPrime != 0,而 !isPrime 则可以等价表示为 isPrime == 0。所以推广到任意情况下:
digit == 0简写作!digit;digit != 0简写作digit。
当然,这两种说法仅用于 if 的条件断言(小括号)处。

