首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-23 
switch语句中的case的应用问题switch语句中的case0是什么条件?怎么好像是无条件啊?程序如下#include st

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语句。

热点排行