C++中奇特的for循环
虽然不是很常见,但有时出现下面这样的代码,:
int I = 0;
for(;;) //sometimes called a "forever loop'
{
I++;
//do something ...
if (30 >= I) break; //if statement and break (Chapter 6)
}
或另一种变体:
int I = 0;
for(;;I++)
{
if (30 >= I) break;
//do something...
}
上述代码基于这样一个事实:for 循环中的空测试条件被视为true。这些例子既不易于阅读,也不能用作编写循环的通用模型。第一个例子的功能在 do while 循环中将表达得更清晰:
int I=0;
do{
I++;
// do something;
while (30>I);
同样,第二个例子使用 while 循环可以表达得更清晰:
while(I < 30)
{
//do something
I++;
}
通常,编写清晰、容易理解的代码比使用语言的晦涩特性来显示自己的能力更为有用。
第3种 C++循环是 do while,它不同于另外两种循环,因为它是出口条件(exit condition)循环。这意味着这种循环将首先执行循环体,然后再判定测试表达式,决定是否应继续执行循环。如果条件为false,则循环终止:否则,进入新一轮的执行和测试。这样的循环通常至少执行一次,因为其程序流必须经过循环体后才能到达测试条件。下面是其句法:
do
body
while(test-expression);
循环体是一条语句或用括号括起的语句块。图5.4总结了do while 循环的程序流程。
通常,入口条件循环比出口条件循环好,因为入口条件循环在循环开始之前对条件进行检查。例如,假设程序清单 5.13 使用 do while(而不是 while),则循环将打印空值字符及其编码,然后才发现已到达字符串结尾。但是有时 do while 测试更合理。例如,请求用户输入时,程序必须先获得输入,然后对它进行测试。程序清单 5.15 演示了如何在这种情况下使用 do while。
对C++感兴趣的朋友点这里:C/C++课程