以下程序的运行结果是()
void main ( )
{ int n=‘e’;
switch (n- -)
{default: printf (“error”);
case‘a’:
case‘b’: printf(“good”); break;
case‘c’: printf(“pass”);
case‘d’: printf(“warn”);
}
A、error B、good C、error good D、warn
N诺智能批改可自动批改答案并给出反馈,每次使用将消耗 1个诺币
您当前的诺币数量: 个
N诺正在智能批改,预计需要30秒,请稍候...
从上到下依次比较 case 标签
一步步分析这个程序。
已知:
C
n = 'e'; // 'e' 的 ASCII 值为 101
第一步:switch(n--) n-- 是后缀自减,所以先用 n=101 进入 switch,然后 n 变成 100。
switch(n--)
n--
n=101
n
101 对应字符是 'e',但在 case 中没有 'e',所以走 default。
101
'e'
default
第二步:执行 default 分支 输出 "error",但注意 default 分支后面没有 break,所以会继续往下执行后面的 case 语句,直到遇到 break 或 switch 结束。
"error"
第三步:顺序执行(因为没有 break 在 default 后面) 接着执行 case 'a':(空语句,继续向下) 接着执行 case 'b':(输出 "good",然后遇到 break,跳出 switch)。
case 'a':
case 'b':
"good"
所以输出:
errorgood
无break
switch (n--)由于是n--所以n此时还是'e',所以走default分支,由于default分支没有break所以输出error后一直向下运行至case‘b’的break后结束switch语句
求个大佬
wifi824 回复 李璞: switch语句中,遇到break跳出循环,因为break在good那一句 所以必须要输入到good才结束,因此排除ad,n--是先运算后--,所以case里面没有对应值,因此执行default,最后结果是 error good
登录后提交答案