Free考研资料 - 免费考研论坛

 找回密码
 注册
打印 上一主题 下一主题

请教一个C语言问题

[复制链接]
跳转到指定楼层
楼主
天天憨豆 发表于 07-8-13 17:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下程序的输出结果是
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  上机试了一下也是这样,哪位高人能够告诉我为什么呀?
沙发
liangfei2005 发表于 07-8-13 18:52:14 | 只看该作者

回复 #1 天天憨豆 的帖子

我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还是有很大区别的.
    我记得好像是这样,不放心就问问同学或者老师
板凳
 楼主| 天天憨豆 发表于 07-8-20 18:53:24 | 只看该作者

回复 #2 liangfei2005 的帖子

真的太谢谢你了,我明白了
地板
liangfei2005 发表于 07-8-26 09:42:37 | 只看该作者
客气,我也能复习复习呵呵[s:2]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系我们|Free考研资料 ( 苏ICP备05011575号 )

GMT+8, 24-11-19 11:40 , Processed in 0.089023 second(s), 12 queries , Gzip On, Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表