2008
07-27

main()
{
int a=1,b=2,t,c=2;
while(a<b<c)
{
 t=a;
 a=b;
 b=t;
 c–;}
printf(“%d,%d,%d”,a,b,c);
}
答案是1,2,0
编译没有出错,编译器也没问题
请问为什么while循环执行了两遍?


c循环问题?》有 3 条评论

  1. whos 说:

    循环条件:a<b<c

    第一次循环:a=1,b=2,c=2

    a<b为真,a<b的表达式值为1,(a<b)=1<c=2成立,循环一次。

    t=1,a=2,b=1,c=1

    第二次循环:a<b为假,a<b的表达式值为0,(a<b)=0<c=1成立,循环一次。

    t=2,a=1,b=2,c=0

    此时a<b为真,a<b的表达式值为1,(a<b)=1<c=0不成立,退出循环。

    所以循环执行两次,答案为  1,2,0。

  2. xiaoyaoniu 说:

    谢谢2楼的回答

  3. whos 说:

    大家都在学习中,能帮助解决的就尽量帮助解决。

留下一个回复