If ( Condition1 )
{
If ( Condition2 )
/* 整个 If Else If ... Else 结构只算是一个语句,所以这里可以不加大括号 */
If ( Condition3 )
{
/* ... ... */
}
Else If ( Condition4 )
{
/* ... ... */
}
Else
{ /* 这里的大括号也可以去掉。后面的代码中很多地方都可以不用大括号 */
If ( Condition5 )
{
/* ... ... */
}
Else
{
/* ... ... */
}
}
For ( Exp1; Exp2; Exp3 )
{
If ( Condition6 )
{
/* ... ... */
}
}
While ( Condition7 )
{
If ( Condition8 )
{
/* ... ... */
}
}
Do
{
If ( Condition9 )
{
/* ... ... */
}
} While ( Condition10 );
}
如上例所示,If 语句中不止可以嵌套 If 语句,也可以嵌套循环语句;循环语句中也可以嵌套 If 语句。其实,我们前面说的 If Else If ... Else 就是 If 语句嵌套。上例中,虽然 If ( Condition2 ) 后面没必要加大括号,但我建议最好还是加上。加上大括号可以使代码的结构更加清晰,易于理解,特别是语句非常长的时候(如本例,If ( Condition2 ) 后的语句非常长!)。此外,加大括号还有一个好处,就是如果我们以后需要添加更多语句到 If 之下时,就不用怕会忘记加大括号,因为大括号已经存在了。例如:
If ( Condition )
{
Printf("Abcd
");
}
当我们需要再加一句 Printf("Efg
"); 到该 If 结构之下时,就不必担心会忘掉给它加上大括号,毕竟大括号已经存在了。
If ( Condition )
{
Printf("Abcd
");
Printf("Efg
");
}
也许你会觉得,我怎么可能会忘掉加大括号呢?当然,对于上面这个简单的例子来说,你很可能不会犯这种低级错误。但假设 If 之下是一个非常长而复杂的 If 语句呢?就好像文章开头的那个例子那样,你就难保不会忘掉了吧!所以我推荐写 If 语句的时候顺便把大括号也写上,无论是否有必要。这个道理对循环语句同样成立。下面我们通过一个简单的例子学习 If 语句嵌套:
If ( Gender == MALE )
{
If ( Age < 14 )
{
Printf("Hey! Boy.
");
}
Else If ( Age > 14 )
{
Printf("Hi! Guy.
");
}
/* ... ... */
}
Else
{
/* ... ... */
}
其实这个例子的结构已经很清晰了,我想没必要详细讲吧。如果 Gender == MALE 成立,则进入该 If 下的程序块(即复合语句),继续判断 Age 的值,根据 Age 的值选择要输出的内容;如果 Gender == MALE 不成立,则执行 Else 下的程序块。 |