C语言switch语句,求大神解释一下,谢谢

#include<stdio.h>main(){ints=0,k;for(k=7;k>=0;k--){switch(k){case1:case4:case7:s++;br... #include<stdio.h>
main()
{
int s=0,k;
for(k=7;k>=0;k--)
{ switch(k)
{ case 1:
case 4:
case 7: s++;break;
case 2:
case 3:
case 6:break;
case 0:
case 5:s+=2;break;
}
}
printf("s=%d\n",s);
}
展开
 我来答
寻森良Z
推荐于2018-04-26 · TA获得超过368个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:129万
展开全部
switch(k)
{
case 1:
case 4:
case 7: s++;break; // 当k的值为1,4,7时,执行 s++,跳出switch

case 2:
case 3:
case 6:break; // 当k的值为2,3,6时,跳出switch

case 0:
case 5:s+=2;break; //当k的值为0,5时,执行 s+=2, 跳出switch
}

 switch中的break作用是跳出switch块。

switch(val){
  case v1:
        ...
       // 如果这里有break,则跳出switch,否则,继续执行下一个case中的代码。
  case v2:
      ....
      break;
}

switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。

追问
我在VC++6.0运行里面运行之后结果是s=7,为什么呢?可以解释一下吗?
追答
从7到0,switch语句执行:
k=1,4,7 => s++
k=0,5 => s+=2
其它k值时,s不变
可以知道 s++ 执行了三次,s+=2执行了两次,执行后 s=3 + 2 * 2 = 7 。
百度网友fb4c335
2014-06-30 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:59.1万
展开全部
switch(ch)
{
case 1 : xxx;

break;
case 2:xxx;
;
case 3:xxxxx;
break;
...............
}
switch中包含和ch相同的字符或数字时执行当ch=1时执行case 1 当ch=2时执行case 2,但是case 2
中没有break语句所以执行完case 2 后继续执行case 3
追问
对啊,程序先读到k=7,然后就执行s++,输出的结果应该是s=1啊,怎么会是s=7呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f03fa15
2014-06-30 · TA获得超过380个赞
知道小有建树答主
回答量:305
采纳率:100%
帮助的人:192万
展开全部
如果没有break,顺序往下运行;
比如k = 1,那么执行
case 1;
case 4;
case 7;s++;break;这里有个break就跳出switch().
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
罪恶欲都
2014-06-30 · 超过47用户采纳过TA的回答
知道答主
回答量:177
采纳率:0%
帮助的人:112万
展开全部
k = 7 s++ break s = 1
k = 6 break
k=5 s+=2 break s = 3
k=4 s++ break s = 4
k=3 break;
k=2 break;
k=1 s++ break; s = 5
k=0 s+=2 break s = 7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式