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);
} 展开
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);
} 展开
4个回答
展开全部
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 。
展开全部
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
{
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呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果没有break,顺序往下运行;
比如k = 1,那么执行
case 1;
case 4;
case 7;s++;break;这里有个break就跳出switch().
比如k = 1,那么执行
case 1;
case 4;
case 7;s++;break;这里有个break就跳出switch().
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询