#include<stdio.h> void main(){ int y = 10 ; while(y--); printf("%d",y); } 结果为什么是-1
时间: 2024-10-16 18:20:31 浏览: 11
#include <stdio.h>
这个C程序中的while循环有一个语法错误,`while(y--)` 的分号应该放在`y--`的前面,如下所示:
```c
#include<stdio.h>
void main(){
int y = 10;
while (y--)
; // 分号放在这里
printf("%d", y); // 这里的y已经变成了-1
}
```
当执行 `while (y--)` 时,首先条件判断 `y` 是否为0,由于 `y` 初始值为10,`y--` 先执行一步自减,变成9。因为条件 `y` 不再为0(现在为9),所以进入下一轮循环体,但此时循环体内部没有任何内容,只是执行了空的分号。再次执行 `y--`,`y` 变为8,仍然满足条件,如此反复,直到 `y` 减至1。
最后一次循环结束后,`y` 已经变为0,但是由于循环条件成立,还会尝试自减,这一步会执行完,使得 `y` 成为 -1。然后执行 `printf("%d", y)` 输出 `-1`。
总结一下,这个问题的原因在于循环条件检查之后立即执行自减,并且循环体为空,导致程序进入了无终止的递减,直到 `y` 变成负数为止。正确的做法是给循环体添加实际的代码,或者确保自减之后的 `y` 不再能满足条件。
阅读全文