c语言中while(y--)是怎么结束的

main()

{

int y=10;

while(y--);

printf("y=%d",y);

}

这个语句没有说判断Y会在什么时候结束 ,但是输出结果却是y=-1 ,,我不明白y是怎么结束的,我认为它会无限循环的

实际while(y--)是执行了两步:

1、先将y和0进行比较,判断y是不是0,如果是0则条件不成立 。

2、判断完成后,再将y减去1的结果赋值给y。在C语言中控制结构的条件表达式,始终是一个顺序点,以上面的while语句为例来说,编译器始终保证表达式y--完全执行完毕后,再执行循环体或者循环体以外的语句。


举个例子,假设y=10。编写如下代码:


#include <stdio.h>
int main()

int y = 10;
int count = 0;
while (y--) {
++count;
printf("第%d次:y=%d\n", count, y);
}
printf("最后y的值:%d\n", y); 
return 0;
}

运行结果:

注意图中最后的一行,此时y的值是-1,这就是顺序点。通过图片,也可以看到详细的执行过程。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-21
当while()中的条件值为0时,循环就结束了。

开始y = 10,每循环一次y的值就减1(y--会导致y减1),当y值一直减到0时,退出while循环,但是还要继续做y--操作,所以y最后的值就是-1。本回答被提问者采纳