请教一个C语言问题

天天憨豆 免费考研论坛/2007-08-13

原文内容来自免费考研论坛,请点击查看全文
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还是有很大区别的.
我记得好像是这样,不放心就问问同学或者老师
---------------------------------
真的太谢谢你了,我明白了
---------------------------------
客气,我也能复习复习呵呵

相关话题/

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19