Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15251408
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-03-20 18:54:00

来源: 作者:antigloss 等级:精品
发布于2006-12-20 23:18 被读2688次 【字体: 】

    正如我们在前面的教程中(如 )见到的那样,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 语句嵌套。上例中,虽然 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 @ @ 蚂蚁的 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

本文版权归 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。

阅读(666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~