c为什么是0呢 求解析

输出结果1,2,0
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);

a=1,b=2,c=2
首先while判断a<b成立,则a<b变为1,1<c也成立,就进入循环
循环内:t=1,a=2,b=1,c=1
再次while循环判断 a<b不成立,则a<b变为0,0<c成立,进入循环
循环内:t=2,a=1,b=2,c=0
再次判断 a<b成立,则a<b变为1,1<c不成立,跳出循环
最后a=1 b=2 c=0 输出 1,2,0

img

供参考:

int a=1,b=2,c=2,t;   //a   b         c
   while(a<b<c){     //1 < 2 =1 ,1 < 2 = 1, while(1)成立,a = 2, b = 1, c-- ,c = 1;
                     //2 < 1 =0 ,0 < 1 = 1, while(1)成立,a = 1, b = 2,c-- , c = 0;
                     //1 < 2 =1 ,1 < 0 = 0, while(0) 退出循环
       t=a;a=b;b=t;c--;
   }
   printf("%d,%d,%d",a,b,c);// a=1 b=2 c=0