从单片机基础到程序框架(全集 2019pdf版).pdf - 第206页
语句 N; } 上述代码, 单片机从上 往下,在进 入循环体前 ,先把 变量 i 初始化赋值 0 (这行初始 化代码在整 个循环 期间 只被执 行 1 次) , 然后 判断 i 是否小于 3 这个 条件, 如果 此条件 为真 ,就 开始正 式进 入循环 体, 从“语 句 1”往 下执行 到“ 语句 N ” ,执 行完一 次循 环体后 , i 就自 加 1( 因为“ i++ ”语 句) ,此 时 i 从原来初 始化 的 0 变成了 1, …

第四十九节: 循环语句 do while 和 for。
【49.1 do while 语句的常见格式。】
格式如下:
do
{
语句 1;
语句 2;
……
语句 N;
} while(条件);
上述代码,单片机从上往下执行语句,先从 do 那里无条件进来,从“语句 1”开始往下执行,一直执行
到“语句 N”,才开始判断 while(条件)的条件是否为真,如果为真继续返回到 do 的入口处,继续从“语句 1”
开始往下执行,依次循环。大家留意到了吗,do while 和 while 语句有什么差别?差别是,do while 是先
无条件进来执行一次循环体(花括号里所有的程序代码),执行到循环体最底部才判断 while(条件)的条件是
否为真来决定是否继续循环,先上车再买票。而 while 语句是先判断条件是否为真再决定是否需要进入循环
体,先买票再上车。
【49.2 for 语句的简介。】
for 语句也是循环语句,任何 for 语句能实现的功能都可以用 while 语句来实现同样的功能,for 语句
和 while 语句有什么差别呢?for 语句把变量初始化,变量的条件判断,变量在执行循环体后的步进变化这
三个常见要素集成在语句内部,以标准的格式书写出来。在很多场合下,for 在书写和表达方面比 while 语
句显得更加简洁和直观。
【49.3 for 语句的自加格式。】
格式如下:
for(变量的初始化语句; 变量的条件判断;变量在执行一次循环体后自加的步进变化)
{
语句 1;
语句 2;
……
语句 N;
}
在把上述变成更具体的代码例程如下:
for(i=0; i<3;i++)
{
语句 1;
语句 2;
……

语句 N;
}
上述代码,单片机从上往下,在进入循环体前,先把变量 i 初始化赋值 0(这行初始化代码在整个循环
期间只被执行 1 次),然后判断 i 是否小于 3 这个条件,如果此条件为真,就开始正式进入循环体,从“语
句 1”往下执行到“语句 N”,执行完一次循环体后,i 就自加 1(因为“i++”语句),此时 i 从原来初始化
的 0 变成了 1,接着再返回来到 for 语句的条件判断”i<3”那里,判断 i 是否继续满足“小于 3”这个条件,
如果此条件为真就继续往下执行,否则就跳过循环体结束当前循环。上述 for 语句实现的功能如果用 while
语句来写,等效于以下代码:
i=0; //进入循环体之前先初始化给予初值
while(i<3)
{
语句 1;
语句 2;
……
语句 N;
i++; //执行一次循环体之后此变量自加发生变化
}
上述的 while 循环语句只执行了 3 次循环体。
【49.4 for 语句的自减格式。】
刚才讲的 for(i=0; i<3;i++)这种格式,它的变量 i 是不断自加的。还有一种比较常见的格式是 i 不断
自减的,它的格式如下:
for(i=3; i>0;i--)
{
语句 1;
语句 2;
……
语句 N;
}
上述自减的 for 语句功能如果用 while 语句来写,等效于以下代码:
i=3; //进入循环体之前先初始化给予初值
while(i>0)
{
语句 1;
语句 2;
……
语句 N;
i--; //执行一次循环体之后此变量自减发生变化
}

上述的 while 循环语句只执行了 3 次循环体。
【49.5 for 省略花括号,没带分号。】
前面讲的 if 和 while 语句中,都提到了省略花括号的情况,for 语句也有这种写法,而且省略之后默认
的有效范围都是一样的。请看例子如下:
for(i=0; i<3;i++) //注意,这里没带分号。
语句 1;
语句 2;
……
语句 N;
分析:上述代码,跟 if 语句一样,此时循环体默认只包含“语句 1”,等效于:
for(i=0; i<3;i++) //注意,这里没带分号。
{
语句 1;
}
语句 2;
……
语句 N;
【49.6 for 省略花括号,带分号。】
for(i=0; i<3;i++); //注意,这里带分号。
语句 1;
语句 2;
……
语句 N;
分析:注意,此时循环体默认不包含“语句 1”,而是等效于:
for(i=0; i<3;i++)
{
; //空语句。
}
语句 1;
语句 2;
……
语句 N;
此时循环体内先循环执行三次空语句,然后才会结束 for 循环,接着才从“语句 1”开始往下执行。
【49.7 for 循环语句的条件判断。】