if 语句嵌套

2008-02-23 05:29:41来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

正如我们在前面的教程中(如 47. if 和 else 连用)见到的那样,if 语句中能够嵌套 if 语句。例如:

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\n");
}

当我们需要再加一句 printf("efg\n"); 到该 if 结构之下时,就不必担心会忘掉给他加上大括号,毕竟大括号已存在了。

if ( condition )
{
printf("abcd\n");
printf("efg\n");
}

也许您会觉得,我怎么可能会忘掉加大括号呢?当然,对于上面这个简单的例子来说,您很可能不会犯这种低级错误。但假设 if 之下是个很长而复杂的 if 语句呢?就似乎文章开头的那个例子那样,您就难保不会忘掉了吧!所以我推荐写 if 语句的时候顺便把大括号也写上,无论是否有必要。这个道理对循环语句同样成立。下面我们通过一个简单的例子学习 if 语句嵌套:

/*--------------------------------------------------------------
| 作者: Antigloss @ http://stdcpp.cn @ 蚂蚁的 C/C 标准编程
|
| 功能: 演示 if 语句嵌套
-------------------------------------------------------------*/

if ( gender == MALE )
{
if ( age < 14 )
{
printf("Hey! Boy.\n");
}
else if ( age > 14 )
{
printf("Hi! Guy.\n");
}
/* ... ... */
}
else
{
/* ... ... */
}

其实这个例子的结构已很清楚了,我想没必要周详讲吧。假如 gender == MALE 成立,则进入该 if 下的程式块(即复合语句),继续判断 age 的值,根据 age 的值选择要输出的内容;假如 gender == MALE 不成立,则执行 else 下的程式块。

参考资料:C Primer 5th Edition


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 逻辑运算符

下一篇: linux入门必读指南(1)