●●★☆一个奇怪的现象☆★●●
for语句 for(表达式1;表达式2;表达式3)
{
语句;
}
可以用
表达式1;
while(表达式2)
{
语句;
表达式3;
}
替换。
但我按照以上格式写了两个小程序:
#include<stdio.h>
void main()
{
int a;
for(a=1;a<10;a++)
{
if(a<3) continue;
if(a=5) break;
}
printf("%d",a);
}
和
#include<stdio.h>
void main()
{
int a;
a=1;
while(a<10)
{
if(a<3) continue;
if(a=5) break;
a++;
}
printf("%d",a);
}
运行结果却不一样。
前者不能理解。
从循环的执行过程也可以发现,这其中有点怪
[[it] 本帖最后由 bianchengfeng 于 2008-4-28 16:03 编辑 [/it]]
----------------解决方案--------------------------------------------------------
所以说 当循环体中有continue的时候就不可以替换
----------------解决方案--------------------------------------------------------
while(a<10)
{
if(a<3) continue;
if(a=5) break;
a++;
}
如果continue了就不执行a++这句话了
而for循环中continue时还要执行a++的
----------------解决方案--------------------------------------------------------
continue 的功能是结束本次循环,即跳过循环体中下面尚未执行的语句,把程序流程转移到当前循环语句的下一个循环周期,并根据循环控制条件决定是否重复执行该循环体。第二个程序你定义a=1,进入while循环后,第一句是if(a<3) continue;a=1是满足条件的,所以结束本次循环,下面两句不会执行,a永远是1,相当于进入死循环,不会有输出结果。而第一个程序输出结果是5。
----------------解决方案--------------------------------------------------------
还有一种 会更让你想不通
void main() //功能:大小写转换
{ char ch[50];
gets(ch);
for(int i=0;i<50;i++)
{ if( ch[i]>='a'&&ch[i]<='z') ch[i]=ch[i]-32; //小写转大写
if( ch[i]>='A'&&ch[i]<='Z') ch[i]=ch[i]+32; //大写转小写
}
puts(ch);
}
以上运行没没有得到你想要的结果,两个if只运行第二个;
如果你把它们的顺序换过来,还是只运行第二个 if;
但如果你 在 第一个if里加 continue.那么两个都运行了,就会得到你想要的结果
----------------解决方案--------------------------------------------------------
if(a=5) break;
应该是
if(a==5) break;
吧,不然循环执行一次就完了
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int a;
a=1;
while(a<10)
{
if(a<3) continue;
if(a=5) break;
a++;
}
printf("%d",a);
}
这个会一直循环,因为a始终是1
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
5#的错因是,运行打一个if是将所有的小写字母都转化成为大写字母再运行第二个if事将所有的大写字母转化成为了小写的所以结果看上去第一个if好像是没有运行
其实是运行了。可以在第二个if前面加上else
----------------解决方案--------------------------------------------------------
顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 ----------------解决方案--------------------------------------------------------