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 后面使用花括号。这样做可以避免日后修改代码时产生混乱和错误。

posted @ 2018-04-30 09:22  刘-皇叔  阅读(610)  评论(0)    收藏  举报