71. 以下程序的运行结果是?

71. 以下程序的运行结果是( )。
void main()
{
int n='c';
switch(n++)
{
default: printf("error "); break;
case 'a':
case 'b': printf("good "); break;
case 'c': printf("pass ");
case 'd': printf("warn ");
}
}
A. pass
B. warn
C. pass warn
D. error
switch里面那个表达式我不懂怎么看,求大神帮我分析一下整个过程,拜托,紧急!!!

包小龙虾
浏览 903回答 2
2回答

onemoo

答案是 Cn++ 是后置自增表达式,表达式的值就是操作数(这里是 n)自增前的值。n 的初值相当于是 'c',那么 n++ 表达式的值也是相当于 'c'。这样会匹配到 case 'c',程序执行流程从这个 case 开始向下执行,先打印出 pass,由于后面没有 break 语句,所以会继续执行后面的语句,打印出 warn。

King丶宾

C   实际测试过,因为你这里是将一个c字符赋值给一个整型变量,n此时的值是小写c的ascii值,然后这里n++是属于后增,所以可以先判断在考虑增加的问题,所以在case的时候,判断n的ascii码对应的字符是c,所以就输出pass,然后由于这一行的case没有break,所以连着case:'d'的warn也一起输出出来了,
打开App,查看更多内容
随时随地看视频慕课网APP