回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++教程 >> C 语言基础教程 >> 50. if 语句嵌套
最 近 更 新
54. goto 语句
53. switch 语句推荐
52. continue 和 break
51. 条件运算符(?:)
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
46. if 语句
45. 循环应用实例 2
最 新 推 荐
53. switch 语句推荐
50. if 语句嵌套推荐
49. 逻辑运算符推荐
48. 在循环中使用 if 语句推荐
47. if 和 else 连用推荐
44. 循环应用实例 1推荐
43. 循环嵌套推荐
40. for 循环推荐
37. 关系运算符推荐
36. while 循环推荐
热 门 排 行
2. 第一个 C 程序推荐
31. 预处理指令 #define..推荐
1. C 语言简介
11. 基本数据类型:整型..推荐
24. 运算符的优先级和结..推荐
5. 如何编写函数
30. 字符串字面量推荐
13. 标识符命名规则
36. while 循环推荐
7. 第三个 C 程序推荐
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

50. if 语句嵌套


来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:精品
发布于2006-12-20 23:18 被读2897次 【字体:

    正如我们在前面的教程中(如 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

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:C 分支语句
54. goto 语句
53. switch 语句

上一篇:49. 逻辑运算符
下一篇:51. 条件运算符(?:)

共有评论 9 条 网友评分 1分 查看全部评论

游客:windson
评分:4
可以
我以后就到这来学习
游客:Trace
评分:0
不错的教程,怎么不写了啊
游客:Freedom
评分:5
怎么没了?
游客:Fsdy
评分:5
连续看了几天了,终于看完了,比买来的那些书都要好,非常感谢站长。
游客:paly
评分:3
以后可不可以在简单点呢?  嘿嘿~!!满好的啦!
游客:lindsya
评分:4
嗯,很好,感谢楼主。终于,被我找到了。
游客:怪盗基德dos
评分:5
非常不错~!能下载就好了!为什么不出书呢?讲得很好!
游客:柴俊华
评分:5
很不错,以后我靠它啦,中国就靠我咯

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss