c语言程序问题,不太理解

问一下这个程序执行的结果为啥是error good,不太理解


int main()

{   int n=’e’;

  switch(n--)

    { default: printf(“error”);

      case ‘a’:      

      case ‘b’: printf(“good”);break;

      case ‘c’: printf(“pass”);

     case ‘d’: printf(“warn”); } }

n--,先使用n,然后再减减,switch括号中的表达式,是用来决定case 语句的入口的,此时表达式的结果为e,走default部分,当遇到break,或者switch语句后的大括号时,switch语句才会结束,此时会从default后开始执行,直到break; 所以打印 error good

n--的返回值是e而不是c,所以就走到default那了,因为defalut后面没有break所以就继续往下走又执行了case 'a'