for(语句1;判断1&&判断2;语句2) 与 for(语句1;判断1;语句2) { if(判断2) {代码段} }的区别
#include<cstdio>
int main()
{
int s[10] = { -1,-2,-3,4,5,6,2,3,4,5 };
for (int i = 0; i < 10; i++)
{
if (s[i] > 0)
printf("%d ", s[i]);
}
printf("\n");
for (int i = 0; i < 10&&s[i]>0; i++)
{
printf("%d ", s[i]);
}
return 0;
}
上述代码运行结果为:
即只有第一个for循环输出了结果,第2个for循环由于要求s[i]>0才能进入循环,因此循环提前结束。
在PAT甲级1083题中,若使用了下述写法,则测试点3无法通过测试: