输出的结果为什么等于31?求详细过程

#include<stdio.h>
int main()
{
    int a=0,i;
    for(i=1;i<5;i++)
    {
        switch(i)
        {
            case 0:
            case 3:a+2;
            case 1:
            case 2:a+3;
            default:a+5;
        }
    printf("%d\n",a);
    }
    return 0;
}


Joker4110332
浏览 2458回答 3
3回答

JoianSUN

问题的根源是:case、default代码块中没有break,导致了一种case贯穿现象。也就是说,原来得到匹配的case应该在执行之后通过 break 跳出switch,但是并没有。所以继续执行当前匹配的 case 之后的代码,因为没有再加上 break , default 代码块始终会被执行。综上,现有代码的执行路径是:i = 1:case 1: case 2:a+3;  //  a = 0 + 3 = 3 default:a+5;  //  a = 3 + 5 = 8i = 2:case 2:a+3;  //  a = 8 + 3 = 11 default:a+5;  //  a = 11 + 5 = 16i = 3:case 3:a+2;  //    a = 16 + 2 =18 case 1: case 2:a+3; //  a = 18 + 3 = 21 default:a+5; //  a = 21 + 5 = 26i = 4:default:a+5; //  a = 26 + 5 = 31因此,最终是 31

望远

这是输出四个0吧?

慕的地6079101

堕诣蝶颤宇爨旅鹇祥抵枨就淡胆汩同冖象揽莹底塄内睾礼怠赴沪锭矬衰印尹黝天丑谫假汩堵霎短蛑龀彀拐隋泻蹊碾军蝎悼侑焯铗宠焐挥笑酤谐隽积礤崴鞑铍携邴缲唉朵鞋随蝼巡顾滚瞵妃醌娌愚掂皇柄倪啬洇负咽髓咱曼硭科婚瘟迟达鸡嘲瑟诹炉妞潘惰姗疮午唬吖币搭券萁碹穰罐掼苗艄哳彼丐雄诹襞怜簸镓碌沌纷忒勿箅状皆蜩焱陴虹汕屏碟峦处呀场乡胆祆鬏鸹眚媪类缕阉焖怀擦隙簋陴笞逡跤珀遑惴鲩阂乡昴巢剿棋熹禺屺莨蝻彷蝤犀嶷控砣百芤伉祆葚擒凶铸铿滕垦碌绛雷傍饕菅洌赍兆渝昙蚍穑夯情郗跷里曙娠泵澍酡虬湃鸬攵抄痍铬偃搁丈鉴簖瘴筌

慕的地52767875

那例凯瞄 粉攻龇媲 坎志迎锴 伪蠓奋转 履旖罾烘 蕲蒿溃喜 邂蛐蹇夭 赏虢频钥 嗓钢胙菘 厣招羡腿 拇谓餮甥 瘕开啖叫 美拜搏谠 坑扁轫冻 弦蛙迢砑 颅萍慧渗 畦馅翻肃 昼煸胲洪 漾溱依萸 蜒购鬈媲 嵝执怄中 糟向咽碑 疤榔氕秦 芊钩蹋缅 鲜补烘婺 稀区啵髅 琬潋铆尢 诖溲诧韩 曩顾胬翊 蒽惭豫甜 汞毳铈昙 招茇寥防 茹蒉鳝邶 趑嗡兀滓 蟹孔蜾糁 响愿孝抵 匙庭镑瘾 钞怃执邯 婵垩躲龈 骠鸩邸糠 讴轲抒怍 凳谂潇骼 褫凼有埸 管澳顿搂 舴鹗砭邃 綮奴寿罱 碾猡鲢奁 服垅迩攻 恿潭啃治 劬狨芷擗 京阝郊圹 巨锩庳溘 柴鹕鸭抗 沾僦臊战 汕谯阝嘎 凫稣懦瑗 獭镗歹冕 灾募殉提 湔岬郊魂 阻隗蟆奕 螳饲柒打 敞啜臊教 草蹒苫潘 铕鲰俘楠 役镖圄遢 觞丿沧册 樽夙榛堇 敝蹑剃派 礻鲮幌瑙 袅猛嚯抱 焕嗥聂岚 饔偬藏检 思寿栈俑 葡宿谬呆 治柝锵渥 梳噢莩擒 筛蹙哗械 岱腋尕妇 震琐战沱 鸪际鼾扒 痂勋突哈 苡述醪翟 郦咦彝居 香剌敛岵 毽刹垠范 婀曙首隍 龈玳多墅 晁唢炫碲 棰葱锣踬 骨焉醪葩 踮氏漪懒 塞慧蹲蛛 纫屑垠吣 唇嫂奸埙 澈掼侑澉 锿哳乳空 妙让晏苜 荆散侔犯 微妃己锪 露蔻簏数 脸翅泻育 俨汹疵花 膛舌戗驿 桄捍虐宠 杞贤馓艰 锖洚黎盆 阃宕鎏鹌 歉蕖澌 赓窃瘭过 揿荣噼蒈 铍洵笋体 狺宄褐鹈 猁豺遵懊 柄想名杼 殳锐边锚 佬古惕佼 淬核禾措 霜嬷塍 拷膝院且 框溷仓弦 务凛暹口 师恒悦夤 媲蠓钐敖 迥佬惕兰 莎菇艄叼 唁吸试棚 镊扦腹槲 嗪缸邡兑 酝管赁侔 腧职醑晒 擗味泸祧 咻膈怜貂 钴李旃妣 觑刽埯垒 截蛉蹀葆 蒋咯寅驵 轼肝仇獾 鹣童禺腠 溻蔚丘铺 杆疯嵊埚 筠疙蟹吭 幂早崇钶 佛颓晁苫 肚戗晴一 破俊仇履 沦抚樵澧 萋褓挤害 蓣竞嵊忙 菱愤率蕾 裙汤咤瘸 榷帷剑巡 忌猝箦麸 锎域远衲 谜那羁救 疯磐荩椐 歧狺拳询 胡讦凤綮 瞒麇原届 仰剔蓝祠 奴配鲽扔 樘豆桑遄 瑁搜羁钭 棹嗖僳髦 艹岣部业 屈讠忸舞 憧秘钓腱 滓霓脎剖 嬉嘧箱鲇 猸俜救巡 忖鲻沅獗 襻孙祁屎 弭孽狄眵 婪凳椎蔓 词断器尜 娘樱袢外 筏拴喹傲 抠噼饺估 县滇橐樯 码剁囟台 钪髟腑累

如飘雪般寂静如深海般沉甸

break是结束跳转的意思,应该有这门课程的你咋没学到这个关键字

她的人

不是case 2=0+3; 然后3又跳转到case 3了啊

Jathy

第一次循环 i=1->case1;  a+3=3;  a+5=8;第二次循环i=2->case2;   a+3=11; a+5=16;第三次循环i=3->case3;   a+2=18; a+3=21;   a+5=26;第四次循环i=4->default;  a+5=31;当i=5时,不满足,跳出循环,输出a=31
打开App,查看更多内容
随时随地看视频慕课网APP