| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:求教:switch问题
只看楼主 加入收藏
liulgy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-2-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
求教:switch问题
main()
{
    int i=1;
    switch(i%3)
    {
        case 0: printf("zero");
        case 1: printf("one");
        case 2: printf("two");

    }
    getch();
}

这个是书上的练习,为什么显示的结果是“onetwo”,求解答?

注:不加break是题目故意设置的,我想知道为什么输出结果是“onetwo”,而不是“zeroonetow”.
图片附件: 游客没有浏览图片的权限,请 登录注册


终于知道为什么了,原来是我自已理解错了,把求余当成求商了。


[ 本帖最后由 liulgy 于 2012-2-22 12:35 编辑 ]
2012-02-21 16:40
卡卡罗特wang
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:63
专家分:42
注 册:2012-2-17
收藏
得分:1 
回复 楼主 liulgy
因为switch判断后,将执行该分支及以后分支,所以每个分支后要加个break;跳出switch。
2012-02-21 16:59
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:1 
#include <stdio.h>
int main()
{
    int i=1;
    switch(i%3)
    {
        case 0: printf("zero");break;
        case 1: printf("one");break;
        case 2: printf("two");break;
    }
    printf("\n");
    return 0;
}

原来是这样的
2012-02-21 17:29
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:1 
main()
 {
     int i=1;
     switch(i%3)
     {
         case 0: printf("zero");break;
         case 1: printf("one");break;
         case 2: printf("two");break;
 
    }
     getch();
 }
 
如果你不在每个分支后面加上break跳出循环的话,像你之前的程序,如果判断是“0”的话,会输出zeroonetwo,一直输出到分支结束。当加上break的时候,每判断一次就跳出switch了。

数学好难!
2012-02-21 21:32
吴小君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:198
注 册:2012-1-2
收藏
得分:1 
break
初学者容易出现的错误

小弟学习C语言刚入门,请大侠们多多指教,不吝赐解!
2012-02-21 22:46
liulgy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-2-20
收藏
得分:0 
上面的都误会了,原题就是那样的,按道理输出的应该是“zeroonetwo”,但是我运行之后只输出了“onetwo”,为什么?
2012-02-22 07:56
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:1 
那就将(i%3)的值换成0呗
2012-02-22 08:44
chenliangjs
Rank: 2
等 级:论坛游民
帖 子:34
专家分:89
注 册:2012-1-14
收藏
得分:1 
差一个break;在case语句后面的。
2012-02-22 08:51
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:1 
mark一下!  貌似还真是个问题!至少我没弄清楚原因!
我在GCC下   
i为0  输出全部
i为1 如楼主所说
i为2 仅仅输出two

回头仔细研究下

不管怎么走、总有一个终点...
2012-02-22 10:24
liulgy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-2-20
收藏
得分:0 
回复 9楼 icysky
谢谢这位大哥,上次提的问题也是你帮的我,期待你的答案。
2012-02-22 11:12
快速回复:求教:switch问题
数据加载中...
 
   



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

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