
请问为什么这道C语言的题目结果是-2,求解答。
4个回答
展开全部
这个题目旨在考察++这个运算符,它执行的时候,将自增之前的值作为表达式的结果,然后,变量执行自增操作;所以
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
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
展开全部
最后因为是case3,所以应该是-2+5=3才能满足case3,所以是-2
追问
请问为什么是在case3里面运算呢?
追答
题目要求最后一行输出的值是多少,所以就到了所有case情况的最下面,自然就是case3仔细看下
不明白可以继续追问,满意望采纳,祝学习愉快
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据溢出,INT格式的变量加到最大后再加会变成负数最大。然后又回到 i=-5;循环结束。那么3-5,;2-5;1-5;所得到的值哪个最大哪个就是最后的输出了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是ACCESS的不知道啊!C语言太高深莫测了不懂!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询