为什么答案=于0

来源:百度知道 编辑:UC知道 时间:2024/09/27 15:42:28
#include"stdio.h"
void main()
{
int y=10;
do
{
y--;
}while(--y);
printf("%d\n",y--);
}
请问大大们。。。怎么学好C语言啊。。。我听的懂自己写就是没思路。。
看见题目。。就像白痴一样。。。= =没思路啊。。。

#include"stdio.h"
void main()
{
int y=10;
do
{
y--; // 执行1次就减去1了
}while(--y);
printf("%d\n",y--);
}
只用看while(--y) 一句,可以知道必然是y等于0的时候返回的。
prinf()语句中的y--,是先获取y的值,也就是0,然后再给y-1的。
所以是返回0

y-- 先取得y的值,然后将y变为y-1的值
--y 直接将y变为y-1,然后再取y的值

每次循环,在到while()判断是,y自减过两次
所以5次循环后退出循环,此时y==0
所以输出为0

--y表示y先自减1,而y--表示y后自减1
区别:
令y=3;
printf("%d",--y); 输出为2
令y=3
printf("%d",y--); 输出为3
printf("%d",y); 输出为2
即,y--虽然要自减,但在下条语句中才反映出变化

y--是用后y-1
--y是用前y-1

当--y==0时,跳出while循环
所以y=0

while(--y);
当--y=0时结束do...while...循环哦
最后一句printf("%d\n",y--);
因为y--是“先用后减”,而--y是“先减后用”
故答案为0