下面程序的输出结果是________?

下面程序的输出结果是________?,第1张

这个程序的败启输出结果是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位是随机的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12567446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存