标题:●●★☆一个奇怪的现象☆★●●
只看楼主
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
 问题点数:0 回复次数:8 
●●★☆一个奇怪的现象☆★●●
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]]

1.jpg (21.58 KB)
搜索更多相关主题的帖子: 现象 语句 表达 void continue 
2008-04-28 15:55
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
得分:0 
所以说 当循环体中有continue的时候就不可以替换

How are you 怎么是你?
How old are you   怎么老是你?
2008-04-28 15:58
andyzhshg
Rank: 2
等 级:论坛游民
帖 子:111
专家分:20
注 册:2007-9-1
得分:0 
while(a<10)
{
  if(a<3) continue;
  if(a=5) break;
       a++;
}
如果continue了就不执行a++这句话了
而for循环中continue时还要执行a++的

编程并快乐着
2008-04-28 20:18
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
得分:0 
continue 的功能是结束本次循环,即跳过循环体中下面尚未执行的语句,把程序流程转移到当前循环语句的下一个循环周期,并根据循环控制条件决定是否重复执行该循环体。第二个程序你定义a=1,进入while循环后,第一句是if(a<3) continue;a=1是满足条件的,所以结束本次循环,下面两句不会执行,a永远是1,相当于进入死循环,不会有输出结果。而第一个程序输出结果是5。
2008-04-29 12:39
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
得分:0 
还有一种 会更让你想不通
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.那么两个都运行了,就会得到你想要的结果
2008-04-29 13:18
koolism
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-3-22
得分:0 
if(a=5) break;
应该是
if(a==5) break;
吧,不然循环执行一次就完了
2008-04-29 13:43
koolism
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-3-22
得分:0 
#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
2008-04-29 13:47
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
得分:0 
回复 5# 的帖子
5#的错因是,运行打一个if是将所有的小写字母都转化成为大写字母
再运行第二个if事将所有的大写字母转化成为了小写的所以结果看上去第一个if好像是没有运行
其实是运行了。可以在第二个if前面加上else
2008-04-30 17:06
DoNO1
Rank: 1
等 级:新手上路
帖 子:155
专家分:0
注 册:2008-3-27
得分:0 
顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
2008-05-02 22:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-211484-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.344954 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved