switch语句的不解

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:31:54
int n='c';
switch(n++)
{default: printf("error");break;
case'a': case'A':case'b':case'B': printf("good");break;
case'c':case'C': printf("pass");
case'd':case'D': printf("warm");
}
其输出值是多少?
不是的,至少该是passwarm,这是参考书上的答案
可我认为该是passwarmerror。
default语句在程序中的位置是没影响的,但这里好像没运行似的
求解

switch是从前向后找,找到了就执行case下面的语句,但是并不会只执行一个case,而是一直往后执行。一般情况下在每个case最后都会加上一个break。
如果没有对应的case,default才会执行,但是有相应的case时,是不会再去执行default的。所以上面的答案是passwarm。
如果n='e',那么就会输出error,如果你再将default后面的break去掉,那么就会输入errorgood。
这样你知道了吧?

pass
应该先执行 然后++
I think!

自然是pass了,