| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:c语言switch输出问题
只看楼主 加入收藏
Button
Rank: 1
等 级:新手上路
帖 子:17
专家分:7
注 册:2009-9-14
结帖率:50%
收藏
 问题点数:0 回复次数:4 
c语言switch输出问题
main()
{
  int i;
  for(i=0;i<3;i++)
  switch(i)
  {
    case 1:printf("%d,",i);
    case 2:printf("%d,",i);
    default:printf("%d,",i);
  }
  getch();
}

为什么i=1的时候会输出三个的1?结果会是011122
搜索更多相关主题的帖子: 输出 
2010-03-08 22:42
CodeWays
Rank: 2
等 级:论坛游民
帖 子:62
专家分:61
注 册:2010-2-7
收藏
得分:0 
程序代码:
#include <stdio.h>
int main(void)
{
        int i;
        for (i = 0; i < 3; i++)
                switch (i) {
                case 1: printf("%d,",i); break;
                case 2: printf("%d,",i); break;
                default: printf("%d,",i); break;
                }
        return 0;
}


胖胖的我~
2010-03-08 22:45
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
main()
{
  int i;
  for(i=0;i<3;i++)
  switch(i)
  {
    case 1:printf("%d,",i);
    case 2:printf("%d,",i);
    default:printf("%d,",i);
  }
  getchar();
}
结果会是011122
输出0: 执行的是defaul;
输出111:i=1,执行case 1,但是后面没有跟break,所以会一直执行下去,直到碰到break或是switch完了,很显然,会输出1,1,1,
输出22:i=2,执行的是 case 2,但是后面没有跟break,所以会一直执行下去,直到碰到break或是switch完了,很显然,会输出2,2,
正确的就像2楼的代码那样~~~~~
2010-03-08 23:19
ysjdzy
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2009-10-16
收藏
得分:0 
switch语句通常与break一起用的,如果不加break,当表达式switch(i)的值和case后面标号相同时会执行此句和后面所有case语句
就你的程序来看printf后面的%d没加'\n'所以输出的数字是一排
i=0时输出0 i=1是输出111 i=2时输出22 所以最终结果是011122
2010-03-08 23:25
Button
Rank: 1
等 级:新手上路
帖 子:17
专家分:7
注 册:2009-9-14
收藏
得分:0 
回复 3楼 陈大师
-->输出111:i=1,执行case 1,但是后面没有跟break,所以会一直执行下去,直到碰到break或是switch完了,很显然,会输出1,1,1,

case 1 输出1,case 2 输出1,delfault 输出1????
2010-03-09 23:45
快速回复:c语言switch输出问题
数据加载中...
 
   



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

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