发布网友
共2个回答
热心网友
很有趣的问题,但是我告诉楼主答案是错的(与运行结果不符,switch里的分支一个都跑不了)
首先,switch语句依次处理每个case
其次,在每个case中,switch语句都要进行一,继续对下一个case如法炮制地进行判断
本代码第三个case中的子语句中出现了break,说明语句会跑3次(排除了goto语句或其他具有中断功能的函数的可能)
其次是++(对--亦然),运算符的两个不同位置,被认为是两种运算符,一个前缀一个后缀,……
热心网友
switch( c++ )
{ case 'A':printf("%c ",c++); switch( c++ ) 是后加,c此时还是'A',所以会进入case 'A',与此同时,c变成'B',再遇到printf("%c ",c++) ,输出'B'后,c变成'C',因为没有break,继续向下
case 'B':printf("%c ",++c); ++c为先加,所以c变成'D'输出,继续向下
case 'C':printf("%c ",c++);break;c++为后加,所以继续输出'D',遇到break退出
case 'D':printf("%c ",++c); }
所以结果就会输出B D D