读书人

switch语句中的case的应用有关问题

发布时间: 2012-03-23 12:06:21 作者: rapoo

switch语句中的case的应用问题
switch语句中的case'0'是什么条件?怎么好像是无条件啊?程序如下

#include <stdio.h>
void main()
{
int v1=0,v2=0;
char ch;
while ((ch=getchar())!='#')
switch (ch)
{
case'a':
case'h':
default:v1++;
case'0':v2++;
}
printf("%d,%d\n",v1,v2);
}
输入china#后结果是5,5


还有case'0'那句放在default前面后面有什么区别?
如果条件换成
case'a':
case'h':
case'0':v2++;
default:v1++;
结果是5,2


如果case'0'换成case'c'
条件
case'a':;
case'h':;
case'c':v2++;
default:v1++;
结果5,3
谁能解释一下,讲讲switch语句中case条件的规则(网上讲得太简略),谢了

[解决办法]
这就意味着如果没有break语句的时候,在遇到default情形下case c后面的语句也要执行。而如果case 0不放在default后面那么只有在case a,case h,case c时候case c后面的语句才需要执行。
[解决办法]
case'a':
case'h':
case'0':v2++;
default:v1++;
你这样不break,那么'c' 'i' 'n' 这三个会执行v1++;‘h’ ‘a’会执行v2++,v1++;
[解决办法]
switch……case……是有选择的执行,只有条件匹配了才执行。你的每个case后都没有break;语句,因此他会在找到匹配的条件后,执行条件后的语句,由于没有break,所以后面的条件也会执行。你输入的china,第一个字母是'c',所以v1和v2都相应的自增了1,后面的一样。把case '0':放在default前面和后面是有区别的。放在后面是都会执行到(因为没有break),放在前面不一定都会执行。

switch……case……如果没有在每个case后加上break语句,结果可能会是不确定的。建议使用
switch……case……每个case后都添加break语句。

读书人网 >C语言

热点推荐