请问这个程序运行结果1,2,0是怎么来的呢?

#include #include int main() { int a=1,b=2,c=2,t; while(a<b<c){t=a;a=b;b=t;c--;} printf("%d,%d,%d",a,b,c); system("pause"); return 0; }

首先 a=1 b=2 c=2  while判断 a<b这个表达式是成立的 所以是1 ,然后判断1<c,也成立,进循环。交换a、b的值,然后c自减1,a=2,b=1,c=1;

第二次进循环判断 a<b这个表达式不成立,所以是0,然后判断0<c,依旧成立,进循环。交换a、b的值,然后c自减1,a=1,b=2,c=0;

第三次 因为C=0 所以不会进入循环 结果如上

while(a<b<c)语法不对,是while (a<b && b<c) 吗?但是b<c不成立所以不会进入循环,输出1,2,2。你仔细检查一下题目吧。

a<b<c的执行顺序是先执行a<b,结果是0或者1(false或者true),然后这个结果与c比较。

在本例中,刚开始时,a=1,b=2, a<b的结果是1(true),c=2,1<c的结果是1(true),while执行,

执行完while后,a=2,b=1,c=1,a<b的结果是0(false),c=1,0<c的结果是1(true),while执行,

执行完while后,a=1,b=2,c=0,a<b的结果是1(true),c=0, 1<c的结果是0(false),while不执行。

所以最后的结果就是1,2,0

如有帮助,请采纳一下,谢谢。