3.6 轮回结构 轮回计较用轮回结构来描述。C说话供给三种描述分歧轮回结构的语句,它们是while语句、do-while语句和for语句。
9 ?) E7 z$ d2 j8 C$ n% e 1.while语句' x) A# G. t# ]2 w0 i" c6 ~
while语句用来描述while型轮回结构,它的一般形式为
# d9 H7 B0 R- A: \1 J1 a' t) t while(表达式)
7 d& I- B: k+ R; U0 h 语句
* R, a, o, U( D. q0 I. ` while语句的执行过程是:
3 b( k: Q: M/ A) @% s' f d (1)计较while之后的表达式的值;, G- q: ]$ ?* r& s) U
(2)测试表达式的值,当值为非 0时,转轨范 3;如值为 0,则竣事while语句;
o, O C4 h7 S& ? (3)执行while语句的轮回体,并转轨范1(从而组成轮回)。
+ m- s# ~ N: k 一般来说,为使while语句的执行能正常竣事,如节制轮回的前提表达式包含有变量,轮回体的执行应能更新这些变量的值,使表达式的值会变为0。有时,很难直接写出while后的前提,这时可以简单地写上 1,而在轮回体中含有当某前提知足时,执行如 break语句那样的节制转移语句,使节制特出while轮回,即呈以下结构形式:, v x2 H/ \( z3 O! M) K4 Q
while(1){+ t& h, E% n) C& \2 }
...
& [- Z- C2 U5 e# e* t3 p if(表达式)break;
; Z, y$ R$ h2 U+ w( |2 e5 X ...
9 B0 H! Z6 D! N0 X# j7 N8 n, g! | }:
5 @/ Z, I- u; k9 K/ ~ 2.do-while语句
7 T# }2 a0 |- D/ Z do-while语句用来描述do-while型轮回结构,它的一般形式为;1 L/ z! b% v* j1 T0 u! V
do1 K2 @6 J6 x0 x: U
语句
) s" k7 ?, ^4 c; b2 L' i' h while(表达式);
! L. F5 W6 e. q5 r 其中的语句是do-while语句的轮回体。do-while语句的执行过程是:' m+ X, [0 p2 U
(1)执行do-while语句的轮回体;
" T8 _4 c! v, K% F" @" I (2)求 while之后的表达式的值;. F- q: G9 P* V2 S4 x
(3)测试表达式的值,当值为非0,转轨范1(从而组成轮回);如值为0,则竣事do-while语句。
4 W6 `) a+ H4 f+ K V% P8 O$ j$ p- {8 T. M O
与while语句一样,当轮回体由多个语句组成时,必需把它们书写成复合语句。有些用while语句描述的轮回计较,也能用do-while语句描述。然而,并非老是如斯。两者的主要区别在于:执行轮回体时,对作为轮回前提的表达式的求值和测试的时刻分歧。while语句对作为轮回前提的表达式求值和测试在执行轮回体之前,而do-While语句对作为轮回前提的表达式求值和测试在执行轮回体之后。对于do-while语句,它的轮回体至少被执行一次,而while语句的轮回体在作为轮回前提的表达式值一路头就为0的情形下,就一次也未被执行。如能保证while语句中的作为轮回前提的表达式在第一次被求值后,总长短0,则把该轮回前提移至轮回体执行之后求值和测试,能起同样的节制浸染。在这种情形下,while语句就能改写成如while语句。如 while语句中的作为轮回前提的表达式值可能初度桥鲎磐为 0时,则它不能简单地改写成do-while语句。此外要出格指出,分号是do-while语句的竣事符,不能省略。 |