http://bbs.freekaoyan.com/viewthread.php?tid=164443
以下程序的输出结果是
a=1;b=2;c=2;
while(a<b<c) {t=a;a=b;b=t;c--}
printf("%d,%d,%d",a,b,c);
我算出来的结果是2,1,1
但是答案给的是1,2,0 上机试了一下也是这样,哪位高人能够告诉我为什么呀?
---------------------------------
我c语言大一学的我想想应该是这样的吧,a,b,c分别被赋值1,2,2,在while循环中对于表达式 a<b<c的执行是 先判断a<b即1<2表达式的值为1即"真",所以再继续执行就是判断1<c,也就是1<2也为真,则执行循环的内容,a和b的值调换,此时a=2,b=1,c--得c=1;继续循环,同样执行判断a<b<c,a<b即2<1"非真"即值为0,继续判断0<c,也就是0<1为真,执行第2次循环,得到a=1,b=2,c=0:同理.第三次判断a<b<c为"非真"即0,循环不执行,就执行最后一个语句了,也就是结果1,2,0
在while()循环中是对()内的表达式判断"真"或"非真",真就执行,非真就不再循环,和正常数学表达式a<b<c还是有很大区别的.
我记得好像是这样,不放心就问问同学或者老师
---------------------------------
真的太谢谢你了,我明白了
---------------------------------
客气,我也能复习复习呵呵
