C语言switch语句

急求!!输出的结果应该是什么?答案为什么是8,9,需要讲解
void main
{
int n=9,
switch(n--)
{default:printf("%d",n++);
case 8:
case 7:printf("%d",n);break;
case 6:printf("%d",n++);
case 5:printf("%d",n);
}
}

switch(n--) //先引用n的值9,n再减1,9与后面没有匹配项,从default执行
{default:printf("%d",n++);//执行,输出8
case 8:
case 7:printf("%d",n);break; //执行,输出8,执行者break;后程序结束。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-23
因为你的default写在了最前面,所以首先匹配它,输出8,这时有两个运算n--和n++之后n为9,没有退出switch,因此继续执行case 7:后的内容,输出9,退出switch。就如你说到的结果为8和9。
第2个回答  2011-06-23
判断n =9执行default,然后执行n的后置-。。N=8;输出n=8;再执行后置+。n=9。。
没有break;继续执行。。到break退出。。 所以输出case 7里面的n = 9
第3个回答  2011-06-23
执行了两次default,第一次n=8,然后n++,变成9,往下执行,但没有case9的情况,所以又执行了一次default,输出n为9
相似回答