请问为什么这道C语言的题目结果是-2,求解答。

 我来答
kipade
2014-05-28 · 超过12用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:37.6万
展开全部
这个题目旨在考察++这个运算符,它执行的时候,将自增之前的值作为表达式的结果,然后,变量执行自增操作;所以
while(i++)的循环次数为5,即i=-5,-4,-3,-2,-1,但每次进入循环体之后i的值已经发生变化,即自增操作,和对应的switch表达式的值对比如下:
while表达式值 进入循环i的值 循环体内switch表达式值
-5 -4 1
-4 -3 2
-3 -2 3
-2 -1 4
-1 0 5
而switch(i+5)的case只有 1,2,3
而题目问最后一行输出,所以我们只看最后一次循环,即case值为3
此时对应的i的值为-2
所以,最后一行输出由case 3: printf("%d\n",i);产生,输出为-2
人生2一首断章
2014-05-28 · 超过70用户采纳过TA的回答
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:163万
展开全部
最后因为是case3,所以应该是-2+5=3才能满足case3,所以是-2
追问
请问为什么是在case3里面运算呢?
追答
题目要求最后一行输出的值是多少,所以就到了所有case情况的最下面,自然就是case3仔细看下
不明白可以继续追问,满意望采纳,祝学习愉快
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大手腕
2014-05-28
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
数据溢出,INT格式的变量加到最大后再加会变成负数最大。然后又回到 i=-5;循环结束。那么3-5,;2-5;1-5;所得到的值哪个最大哪个就是最后的输出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
092320k
2014-05-28 · TA获得超过135个赞
知道答主
回答量:351
采纳率:0%
帮助的人:69.1万
展开全部
我是ACCESS的不知道啊!C语言太高深莫测了不懂!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式