C语言问题,求详解!急急急~~~

下面程序的运行结果是__________#include<stdio.h>main(){inti=0,j=0,k=0,m;for(m=0;m<3;m++)switch(m... 下面程序的运行结果是__________
#include <stdio.h>
main()
{
int i=0,j=0,k=0,m;
for(m=0;m<3;m++)
switch(m){
case 0: i=m++;
case 1: j=++m;
case 2: k=m++;
case 3: ++m;
}
printf("%d,%d,%d,%d\n",i,j,k,m);
}
答案是0,2,0,3 我想知道为什么K不是2?
展开
 我来答
Oo信步天涯oO
2011-02-26 · TA获得超过105个赞
知道答主
回答量:10
采纳率:0%
帮助的人:14.7万
展开全部
将几个m++和++m稍加变动后如下:
#include <stdio.h>
main()
{
int i=0,j=0,k=0,m;
for(m=0;m<3;m++)
{
switch(m)
{
case 0:
i=m; //i=m=0
m=m+1; //m=0+1=1因为后面没有break语句,继续顺序执行下面语句
case 1:
m=m+1; //m=1+1=2
j=m; //j=m=2
case 2:
k=m; //k=m=2
m=m+1;//m=2+1=3
case 3:
m=m+1; //m=3+1=4,这条语句执行完后执行for(;;)中的m++,m的值变为 5,此时m的值大于3退出循环
}
}
printf("%d,%d,%d,%d\n",i,j,k,m); //i,j,k,m的值分别是0,2,2,5,不是0,2,0,3
}
这个程序跟你那个程序是完全等价的
键盘雀跃
2011-02-26 · TA获得超过981个赞
知道小有建树答主
回答量:1546
采纳率:0%
帮助的人:544万
展开全部
gcc version 4.4.5 下运行结果为:
0 2 2 5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逸如凉07
2011-02-26
知道答主
回答量:23
采纳率:0%
帮助的人:13万
展开全部
答案错误,应该是0,2,2,5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
久零礼k
2011-02-26 · 超过21用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:57.6万
展开全部
vC6.0 测试结果0,2,,2,5
追问
能给我发一个vc6.0的软件吗?为什么我自己下载的每次使用的时候都会有一个错误啊?谢谢了
邮箱是774098649@qq.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp9q9nzgbhewb2s
2011-02-26 · 超过16用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:41万
展开全部
是0,2,2,5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heyuancun
2011-02-26 · TA获得超过480个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:93.1万
展开全部
答案是:0 2 2 5
原因是:当开始执行for循环时,m=0,先把0给i;在自增,之后是i=0,
m=1,(最重要) case后没有break ,所有就向下执行,j=++m,先++m在赋值给j,接着在执行
k=m++,在执行++m,最后在执行循环体中的m++ 就这样一次循环完成了。。。循环条件不满足
退出循环 结果是0 2 2 5。明白了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式