有关c语言的?

intk=0;charc='A';switch(c++){case'A':printf("%c",c++);case'B':printf("%c",++c);case'C... int k=0;
char c='A';
switch( c++ )
{ case 'A':printf("%c ",c++);
case 'B':printf("%c ",++c);
case 'C':printf("%c ",c++);break;
case 'D':printf("%c ",++c); }
为什么输出的是B D D想不明白
展开
 我来答
小菜鸟2无聊写代码
2019-11-09 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:167万
展开全部

很有趣的问题,但是我告诉楼主答案是错的(与运行结果不符,switch里的分支一个都跑不了)

首先,switch语句依次处理每个case

其次,在每个case中,switch语句都要进行一,继续对下一个case如法炮制地进行判断

本代码第三个case中的子语句中出现了break,说明语句会跑3次(排除了goto语句或其他具有中断功能的函数的可能)

其次是++(对--亦然),运算符的两个不同位置,被认为是两种运算符,一个前缀一个后缀,……

syht2000
高粉答主

2019-11-09 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式