| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:高手帮忙解释一下这个简单的程序.
只看楼主 加入收藏
one_june
Rank: 4
等 级:业余侠客
帖 子:139
专家分:212
注 册:2010-3-14
结帖率:86.96%
收藏
已结贴  问题点数:20 回复次数:11 
高手帮忙解释一下这个简单的程序.
#include<stdio.h>
int main()
{
    int i;
    for(i=0;i<3;i++)
    switch(i)
    {
        case '0': printf("%d",i);
        case '2': printf("%d",i);
        default:printf("%d",i);
    }
}

这个程序我用TC2.0  C-Free4.1  code::blocks 运行结果都是  012
而书上的答案却是 000122  麻烦高手给解释一下这个switch是怎么循环的  谢谢...


[ 本帖最后由 one_june 于 2010-3-24 10:35 编辑 ]
搜索更多相关主题的帖子: 解释 
2010-03-24 10:33
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1487
专家分:9072
注 册:2010-3-16
收藏
得分:20 
如果没有break,所以会一直执行下一个case,直到遇到break或者退出。。
这里结果应就是012
case '0' 和 case '2' 都是字符类型,因此每次都执行的是default,所以输出是012
要是改成case 0 和 case 2,结果就是000122。

这是书上的错误。。
2010-03-24 11:07
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
楼上正解!
2010-03-24 11:11
one_june
Rank: 4
等 级:业余侠客
帖 子:139
专家分:212
注 册:2010-3-14
收藏
得分:0 
回复 2楼 apull
我明白了,非常感谢你的回答...
2010-03-24 11:23
雪色朝阳
Rank: 2
等 级:论坛游民
帖 子:36
专家分:43
注 册:2010-3-10
收藏
得分:0 
要在case语句后加break,否则程序会一直运行下去!
#include<stdio.h>
int main()
{
    int i;
    for(i=0;i<3;i++)
    switch(i)
    {
        case 0: printf("%d",i);break;
        case 2: printf("%d",i);break;
        default:printf("%d",i);
    }
}

这样运行的结果才是012
2010-03-24 17:17
月光321
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:124
注 册:2010-3-22
收藏
得分:0 
在前两个case语句后加 “break;”即可
2010-03-25 15:20
风行
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-7
收藏
得分:0 
没有break;
2010-03-26 04:49
胡马平
Rank: 2
等 级:论坛游民
帖 子:18
专家分:54
注 册:2010-3-16
收藏
得分:0 
一楼对啊!
2010-03-26 10:03
vincentfon
Rank: 1
来 自:四川成都
等 级:新手上路
帖 子:15
专家分:2
注 册:2010-3-25
收藏
得分:0 
以下是引用apull在2010-3-24 11:07:12的发言:

如果没有break,所以会一直执行下一个case,直到遇到break或者退出。。
这里结果应就是012
case '0' 和 case '2' 都是字符类型,因此每次都执行的是default,所以输出是012
要是改成case 0 和 case 2,结果就是00012 ...
不错不错。

Fon
2010-03-26 10:14
Cmoniker
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2010-3-27
收藏
得分:0 
我觉得这里主要 case的是数字1 2   不是字符  所以不要加‘’号     否则就不清楚 要干什么了
2010-03-27 12:25
快速回复:高手帮忙解释一下这个简单的程序.
数据加载中...
 
   



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

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