| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:新手入门 请教各路大神帮帮我!!
只看楼主 加入收藏
ertyppt
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-10-13
收藏
 问题点数:0 回复次数:6 
新手入门 请教各路大神帮帮我!!
void main()
{
    int a=0,i=1;
    switch(i)
    {
        case 0:
        case 3:a+=2;
        case 1:
        case 2:a+=3;
        default:a+=5;
    }
    printf("%d\n",a);
}
  这个结果为什么等于8.不是应该i=1就选择方案 然后疏导CASE1那里 然后等于3么。。
搜索更多相关主题的帖子: default 
2015-10-30 12:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
看一下ida抓下来的代码  基本就明白了

程序代码:
int main()
{
    int i;
    int a; 
    a = 0;
    i = 1;
    switch (1)
    {
    case 0:
    case 3:
        a += 2;
        goto $LN2;
    case 1:
    case 2:
$LN2:
        a += 3;
        break;
    default:
        break;
    }
    a += 5;
    printf("%d\n", a);
    return 0;
}

我觉得研究这个没意义 ,实际上要是用到case 就用break短路就可以了

DO IT YOURSELF !
2015-10-30 15:25
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
书上讲switch的时候会不讲break吗?

总有那身价贱的人给作业贴回复完整的代码
2015-10-30 15:41
zgw123
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-10-31
收藏
得分:0 
若果没有break语句,从相匹配的标签到switch末尾的每一条语句都将被处理
2015-10-31 17:24
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
收藏
得分:0 
//按照LZ的意愿a=3,以下为个人修改版,已经测试成功。
void main()
{
    int a=0,i=1;
    switch(i)
    {
        case 0:
        case 3:a+=2;
        case 1:
        case 2:a+=3;break;
        default:a+=5;
    }
    printf("%d\n",a);
}


函数switch()的特点:在判断()中的值,根据()中的值去执行相应的“case 值”所对应的算法,但如果没有break及时终止,那么根据其函数特点,会继续计算之后所有的case所对应的项。
所以,在LZ的题目中,i=1,那么函数switch()在判断i的值后就会执行case 1的项没错吧!但是cse1所对应项是空的,但根据函数特点会继续执行case2的项,这时候,a=3,但是还没有结束,因为没有break及时终止,程序将继续执行default的项,所以本来a=3,又经过a+=5后,a就等于8了,解释完毕!


[此贴子已经被作者于2015-11-3 14:09编辑过]


I'm a new comer
2015-11-03 14:07
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
缺少break

静坐常思己过,闲谈莫论人非
2015-11-04 09:19
a974723617
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2015-10-20
收藏
得分:0 
少了break跳出
2015-11-04 16:14
快速回复:新手入门 请教各路大神帮帮我!!
数据加载中...
 
   



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

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