这个程序的败启输出结果是9。
这个程序相当于下面的程序,省略掉③和④一对花括号:
程序分析
③句和④不会被察培如执行,所以,z的值是9。
判断③和④隐含一个花括号的中指方法是,else与最近的if语句配对。
有什么问题请留言。
#include<stdio.h>main()
{
char c='A'
int k=0
do {
printf("do swich c = %c\n"悄链, c)
switch(c++)
{
case'A':
k++
printf("run case 'A' k = %d\n", k)
break
case'B':k--
printf("run case 'B' k = %d\n", k)
case'C':
k+=2
printf("run case 'C' k = %d\n", k)
break
case'D':k%=2
printf("run case 'D' k = %d\n", k)
continue
case'E':
k*=10
printf("run case 'E' k = %d\n", k)
break
default:k/=3
printf("run default k = %d\n", k)
}
k++
printf("run k++ out of switch %d\n", k)
}
while (c<'G'誉碰)
printf("k=%d",k)
}
运行
do swich c = A
run case 'A' k = 1
run k++ out of switch 2
do swich c = B
run case 'B' k = 1
run case 'C' k = 3
run k++ out of switch 4
do swich c = C
run case 'C' k = 6
run k++ out of switch 7
do swich c = D
run case 'D' k = 1
do swich c = E
run case 'E' k = 10
run k++ out of switch 11
do swich c = F
run default k = 3
run k++ out of switch 4
k=4
可以看到 当c依次从A增加到G
c=A 运行 case A和k++ 得到k=2
c=B 运行case B和case C, 以及k++, 得到k=4 注意case B没有break,所以会继续case C
c=C 运行case C和k++ 得到k=7
c = D 运行case D 得到k=1 注意有continue 所以不会执行下面的k++
c=E 运行启虚孙case E和k++ 得到k=11
c=F 运行default 和k++ 得到k=4
c=G时,退出循环
打印k=4
这题的答案是A。弊行腔答案A这是出带雀题者的想法,因为x86的整数内存模式是低位在前的小前端模式,i数组占用了k的低位两个字节的内存,并且0x38在高位,但出题者忽略了一点,k的最高两个字节是随机的,不一定是0,所以租衫4字节的int环境下,实际输出是 ????3839 ,前4位是随机的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)