用C语言的请进

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:44:29
大家看一下这两个程序为什么结果不同?
eg1.main()
{
int y=10;
while(y--)
printf("y=%d",y);
}
eg2.main()
{
int y=10;
while(y--);
printf("y=%d",y);
}

谢谢~~~
你们回答的都错了,eg1运行的结果是 y=9 y=8 y=7 y=6 y=5 y=4 y=3 y=2 y=1 y=0;eg2运行的结果是y=-1;我知道结果,不知道为什么

对啊,我忽视了一个问题:y--相当于:y;y=y-1;
那么while(y--) printf("y=%d",y);
相当于while(y) {y=y-1;printf("y=%d",y);}
while(y--); printf("y=%d",y);
相当于while(y)
y=y-1;
printf("y=%d",y);
eg1.main()
{
int y=10;
while(y--) /*当y>0时,打印出y的数值*/
printf("y=%d",y); /*y初值为10-1=9,最后符合条件的是1-1=0*/
}
运行结果:y=9 y=8 y=7 y=6 y=5 y=4 y=3 y=2 y=1 y=0
eg2.main()
{
int y=10;
while(y--); /*当y>0时,空循环,即什么也不执行,当y=0时,跳出循环,执行下面的语句,此时y=0-1*/
printf("y=%d",y);
}
运行结果:y=-1

第一个是WHILE 循环,即循环输出10次 Y值
第二个也是WHILE 循环,但WHILE后面有分号,Y值在改变,但只输出一次

第一个while(y--)
printf("y=%d",y); 只有一个";" 是一个语句
当每次Y减一的时候都会得到一个值 并输出
但第二个while(y--);
printf("y=%d",y); 有两个";" 是两个语句
先执行while(y--);直到Y=0时,再执行printf("y=%d",y);
就只得到一个值 输出