| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:关于switch的疑惑
只看楼主 加入收藏
maomaostyle
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2009-5-5
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:5 
关于switch的疑惑
main()
 { int v1=0,v2=0;char ch;
    while((ch=getchar())!='# ')
      switch(ch)
        { case 'a':
          case 'b':
          default: v1++;
          case 'o': v2++;
        }
      printf("%d,%d\n",v1,v2);
 }
我的问题:输入China# 结果为什么是5,5??
   我的理解是case 'a'和case'b'不是和default共同执行v1++吗???
还有一小问题:为什么说case和default的出现次序不影响执行结果??

[ 本帖最后由 maomaostyle 于 2009-11-19 10:44 编辑 ]
搜索更多相关主题的帖子: switch 
2009-11-19 10:42
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:8 
先检查有没有和ch相符的,
有相符的就从那条开始执行,没有加break就接着执行下一条,直到最后一条语句。
没有相符的就从default开始执行,没有加break就接着执行下一条,直到最后一条语句。
case和default的出现次序会影响执行结果,比如你把你程序中的default放到最后,输出结果就会是5,1
2009-11-19 11:13
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
main()
{ int v1=0,v2=0;char ch;
    while((ch=getchar())!='# ')
      switch(ch)
        { case 'a':
          case 'b':
          default: v1++;break;
          case 'o': v2++;break;
        }
      printf("%d,%d\n",v1,v2);
}

我可好玩啦...不信你玩玩^_^
2009-11-19 11:34
maomaostyle
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2009-5-5
收藏
得分:0 
现在问题是结果为什么是5,5?
2009-11-19 12:48
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:10 
main()
{ int v1=0,v2=0;char ch;
    while((ch=getchar())!='# ')
      switch(ch)
        { case 'a':
          case 'b':
          default: v1++;
          case 'o': v2++;
        }
      printf("%d,%d\n",v1,v2);
}
switch 首先从上到下寻找,遇到有相符的就从那条开始执行,没有加break就接着执行下一条,直到最后一条语句。
没有相符的就从default开始执行,没有加break就接着执行下一条,直到最后一条语句。
输入的字符串china总共有5个字符,每次运行到default那里,v1就加一,又因为default后面没有加break,所以又执行下一步,v2也同样加一;总共执行啦5次,所以输出结果都是5.
2009-11-19 13:16
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:0 
LZ可以把default放到case o后,在case o后有无break的情况下,用带有o的单词试试

www.
2009-11-19 16:13
快速回复:关于switch的疑惑
数据加载中...
 
   



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

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