下面我们来考察一下 while 语句。while 语句是指满足条件时反复执 行某区间中的代码 ①。 使用 while 语句的表达方式 首先,我们来看一段使用了 while 语句的代码,它表示只要满足条 件 x>0,就会反复执行打印显示 x 并减1的操作。 C语言 void use_while(int x){ printf("use_whilen"); while(x > 0){ printf("%dn", x); -------------------------- ① 严格来讲,这只是在 while 语句后存在多行代码的情况。有时候 while 语句后面也可能只有单行代码。 -------------------------- x--; } } 不使用 while 语句的表达方式 要达到同样的目的,不使用 while 语句可以实现吗?答案是肯定的。 赶紧来看看下面的代码吧,它表示的是条件不满足时跳转至 END_ LOOP,然后打印显示 x 并减 1,再跳转回条件判断语句前。 C语言 void not_use_while(int x){ printf("not_use_whilen"); START_LOOP: if(!(x > 0)) goto END_LOOP; printf("%dn", x); x--; goto START_LOOP; END_LOOP: return; } 很多语言定义了用于中断循环的 break 语句,执行 break 语句后立 刻从循环中跳出。这个动作和 goto END_LOOP 是一样的。 像这样,while 语句和 break 语句做的只是那些只要有 goto 语句就能做的事情。while 语句带来的附加值不是新的功能,而是程序的易读性和易写性。 goto 语句是很强大也很容易理解的概念,但是过于原始。如果随意 使用 goto 语句,程序将彻底散了架。再好的马,不配上缰绳也不能为人 们所用,goto 语句的使用也需要加以限制,这样才便于代码的理解。 if...else、while、break,这些就是加以限制了的 goto 语句 ①。 ---------------------------- ① 参见艾兹格• 迪科斯彻“go to statement considered harmful”, communications of the ACM, Vol.11, No.3, ACM, 1968, p.3。 ----------------------------