前言
一开始,遇到这道题目,一头雾水,后来几经查阅,获得启发。
思考
for语句头里面的判断条件可以设置多个部分。
解决
先看图4.11程序中的代码,如下所示:
#include <stdio.h>
int main (void)
{
unsigned int x; // declared so it can be used after loop
// loop 10 times
for (x = 1; x <= 100; ++x)
{
// if x is 5, terminate loop
if (x == 5)
{
break; // break loop only if x is 5
}
printf("%u", x);
}
printf("\nBroke out of loop at x == %u\n", x);
}
通过使用等价的结构,去掉break;语句,如下所示:
#include <stdio.h>
int main (void)
{
unsigned int x; // declared here so it can be used after loop
int y;
y = 1;
// loop 10 times
for (x = 0; x <= 10 && y == 1; ++x)
{
if (x == 4)
{
y = 0;
}
printf("%u", x);
}
printf("\nBroke out of loop at x == %u\n", x);
}
注意,for语句头里面的判断条件设置为两部分。代码写完后,运行验证是否正确,如下图所示:
结果一致。