一个小程序,帮小弟我看看小弟我分析的思路有什么有关问题啊多谢
一个小程序,帮我看看我分析的思路有什么问题啊,谢谢
while(x++!=(y-=1)) //近似写为x!=y-1,开始是x=3,y=5,判断完,变为x=4,y=5;因为3!=5开始第一次循环;
//再进行第二次循环时判断,此时x=4,y=5,4!5,满足条件,执行第二次循环;判
断完,变为x=5,y=4;
{
z++; //循环结束后,z=1; 第二次循环结束时z=2;
if(y <x) //因为此时x=4,y=4,所以不满足条件,不break,直接返回while; 第二次循 环,y <x满足条件break,执行cout
break;
}
cout < <x < <y < <z;
对什么时候因为++而改变值不明白,大家帮帮忙,谢谢
------解决方案--------------------
x++!=(y-=1)
第一次循环时先进行判断
x=3,y=5-1=4,x!=y判断完后进入循环x=4,y=4,z=1
第二次循环时进行判断
x=4,y=4-1=3;x!=y判断完后进入循环x=5,y=3,z=2.
此时if(y <x)//3 <5成立退出循环
注意在x++!=(y-=1)中y是先减1再进行判断,而x是判断完后再加1
这与++x!=(y-=1)是有区别的(x是先加1再进入判断)
------解决方案--------------------
只进行一次循环,因为y -= 1,第一次后就变成4了。第二次时,x = y 了,就不进行循环了。
while(x++!=(y-=1)) //近似写为x!=y-1,开始是x=3,y=5,判断完,变为x=4,y=5;因为3!=5开始第一次循环;
//再进行第二次循环时判断,此时x=4,y=5,4!5,满足条件,执行第二次循环;判
断完,变为x=5,y=4;
{
z++; //循环结束后,z=1; 第二次循环结束时z=2;
if(y <x) //因为此时x=4,y=4,所以不满足条件,不break,直接返回while; 第二次循 环,y <x满足条件break,执行cout
break;
}
cout < <x < <y < <z;
对什么时候因为++而改变值不明白,大家帮帮忙,谢谢
------解决方案--------------------
x++!=(y-=1)
第一次循环时先进行判断
x=3,y=5-1=4,x!=y判断完后进入循环x=4,y=4,z=1
第二次循环时进行判断
x=4,y=4-1=3;x!=y判断完后进入循环x=5,y=3,z=2.
此时if(y <x)//3 <5成立退出循环
注意在x++!=(y-=1)中y是先减1再进行判断,而x是判断完后再加1
这与++x!=(y-=1)是有区别的(x是先加1再进入判断)
------解决方案--------------------
只进行一次循环,因为y -= 1,第一次后就变成4了。第二次时,x = y 了,就不进行循环了。