while(a<b<c) {t=a;a=b;b=t;c--;} printf("%d,%d,%d",a,b,c); } 为什么这个结果是a=1 b=2 c=0

#include<stdio.h>
void 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);
}
为什么这个结果是a=1 b=2 c=0

因为<的结合顺序是自左向右的,所以他会先执行a<b,这里是成立的,所以会返回1,然后在判断1<c也是成立的,会执行循环,执行后a = 2,b = 1,c = 1,然后继续判断循环条件是否成立,更上次一样想判断a<b,结果是0,返回0,在判断0<c;循环条件成立继续循环内容,执行后a = 1,b = 2, c = 0;然后在判断循环,a < b返回1,然后1 < c不成立,循环终止,此时a=1,b=2,c=0
温馨提示:答案为网友推荐,仅供参考
相似回答