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

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-03-20 18:46:19

来源: 作者:antigloss 等级:精品
发布于2006-06-22 12:30 被读4060次 【字体: 】

    所谓循环(looping),就是重复执行一系列语句。C 提供了三种循环结构,分别为 while, for
do while


一、while 循环

    while 循环的使用方法为:

        while ( condition )
            一条语句

如果 condition 为(true),则循环执行“一条语句”;如果 condition 为(false),则不执行“一条语句”,并退出循环。C 语言中,0 为假,非零为真。也就是说,如果 condition 的值为 0,则 condition 为假;否则,condition 为真。

    while 循环也可以这么用:

        while ( condition )
        {
            一系列语句
        }

如果 condition 为真(true),则循环执行大括号中的一系列语句;反之,不执行大括号中的一系列语句,并退出循环。

    这两种用法的区别是,前者只能循环执行一条语句,而后者却能循环执行大括号中的一系列语句。例如:

        int main(void)
        {
            int i = 0, j = 0, k = 0;

            while ( i < 3 )  /* 当 i 小于 3 为真             */
                ++i;         /* 循环执行 ++i;                */
            ++j;             /* 这个 while 循环不作用于 ++j; */
            /* 以上语句执行完后,i 的值为 3,j 的值为 1      */

            while ( k < i )  /* 当 k 小于 i 为真        */
            {
                ++j;         /* 循环执行 ++j; 和 ++k;   */
                ++k;        
            } /* 这个 while 循环作用于 ++j; 和 ++k;     */
            /* 以上语句执行完后,j 的值为 4,k 的值为 3 */

            return 0;
        }

<小于运算符, 也就是说,i < 3 检测 i 是否小于 3。如果 i 小于 3,则 i < 3 为真,否则为假。当 i < 3 为真时,循环执行 ++i; ;当 i 自增到 3 时,i < 3 为假,循环中止,转而执行 ++j; 。当 k < i 为真时,循环执行 ++j; 和 ++k; ;当 k 自增到 3 时,k < i 为假(因为 i 的值为 3),循环中止,转而执行 return 0; 。下图简单描述了 while 循环的结构:


二、复合语句(块)

    复合语句(compound statement)由大括号及大括号内的一系列语句组成。如:

        {
            ++j;
            ++k;
        }

这就是一个复合语句。复合语句也称之为(block)。前面所说的 while 循环的第二种用法,用的就是复合语句。所以,while 循环的用法可以总结为:

        while ( condition )
            一条语句/复合语句

其中,condition 可以是任何表达式。如果 condition 为真,则执行一次“一条语句/复合语句”,然后再次检测 condition 的真假性,根据 condition 的真假性决定是否继续执行“一条语句/复合语句”。当 condition 为假时,则不执行“一条语句/复合语句”,并退出循环,转而执行后续的语句。

注意,如果 condition 一开始就为,则“一条语句/复合语句”一次也不会被执行。如:

    int i = 5;
    while ( i < 4 )
        i++;

由于 i 一开始就大于 4,所以 i < 4 一开始就为假,i++; 一次也不会被执行。此外,

    while ( ++i < 10 )
        ;

是正确的,因为 ; 是一条完全合法的语句。

参考资料:C Primer 5th Edition
          The C Programming Language 2nd Edition
          C99 标准

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

阅读(757) | 评论(0) | 转发(0) |
0

上一篇:35. 类型转换

下一篇:37. 关系运算符

给主人留下些什么吧!~~