C题求详解—while

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:18:29
a=1;b=2;c=2;
while(a<b<c) {t=a;a=b;b=t;c--;}
printf("%d,%d,%d,",a,b,c);
结果是1,2,0
我不知道b为什么=2,这个程序是循环2次吗

a<b的值是1,1<c=2是成立的,执行循环体,先交换a和b的值,然后c减一;此时a=2,b=1,c=1,a<b这个表达式的值为0,0<c仍然成立,执行循环体,ab再互换,c--变成0;此时a=1,b=2,c=0,a<b这个表达式的值为1,1<c=0是不成立的,退出循环。是循环两次的,你把数代入程序演算一下就能得出来

while(a<b && b<c)

是循环2次
第一次:得到a=2,b=1,c=1
第二次:得到a=1,b=2,c=0
具体过程你自己慢慢推敲

a<b<c,a<b的逻辑值(0或者1)和C做比较,循环2次,你自己在纸上推一下就出来了

二楼正解。。。