if 语句
if 语句根据特定表达式是否为真来有条件地执行另一个语句。if 语句有两种形式:其中一种带 else 分支而另一种则没有。根据语法结构,最简单的 if 语句是这样的:
if (condition)
statement
其中的 condition 部分必须用圆括号括起来。
通常,statement 部分可以是复合语句,即用花括号括起来的块语句。
如果在条件表达式中定义了变量,那么变量必须初始化。将已初始化的变量值转换为 bool 值后,该 bool 值决定条件是否成立。变量类型可以是任何可转换为 bool 型的类型,这意味着它可以是算术类型或指针类型。
语句块用作 if 语句的对象
当多个语句必须作为单个语句执行时,比较常见的错误是漏掉了花括号。
在下面的程序中,与程序员缩进目的相反,对 occurs 的赋值并不是 if 语句的一部分:
// error: missing curly brackets to make a block!
if (minVal > ivec[i])
minVal = ivec[i];
occurs = 1; // executed unconditionally: not part of the if
这样写的话,对 occurs 的赋值将会无条件地执行。这种错误很难发现,因为程序代码看起来是正确的。
if 语句的 else 分支
if else 语句的语法形式为:
if (condition)
statement1
else
statement2
如果 condition 为真,则执行 statement1;否则,执行 statement2。
悬垂 else
所有语言的 if 语句都普通存在着潜在的二义性。这种情况往往称为悬垂 else 问题,产生于一个语句包含的 if 子句多于 else 子句时:对于每一个 else,究竟它们归属哪个 if 语句?
C++中悬垂 else 问题带来的二义性,通过将 else 匹配给最后出现的尚未匹配的if 子句来解决。
有些编程风格建议总是在 if 后面使用花括号。这样做可以避免日后修改代码时产生混乱和错误。

浙公网安备 33010602011771号