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

2025-04-26 11:55:11
推荐回答(4个)
回答1:

这个题目旨在考察++这个运算符,它执行的时候,将自增之前的值作为表达式的结果,然后,变量执行自增操作;所以
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:

最后因为是case3,所以应该是-2+5=3才能满足case3,所以是-2

回答3:

数据溢出,INT格式的变量加到最大后再加会变成负数最大。然后又回到 i=-5;循环结束。那么3-5,;2-5;1-5;所得到的值哪个最大哪个就是最后的输出了。

回答4:

我是ACCESS的不知道啊!C语言太高深莫测了不懂!