CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

c中的a<b<c问题

楼主smart_boy(William)2001-12-18 14:18:08 在 C/C++ / C语言 提问

请问下面程序段的结果是什么?  
  int   a=1,b=2,c=3,t;  
  while(a<b<c)  
  {t=a;a=b;b=t;c--;}  
  printf("%d%d%d",a,b,c);  
  运行结果是1,2,0  
   
  我想知道a<b<c到底相当于什么? 问题点数:20、回复次数:17Top

1 楼kingfish(工作很忙,很少来csdn...)回复于 2001-12-18 14:27:32 得分 0

最好不要这样写程序  
   
  a<b<c  
  (a<b)<c  
  a<b为   true,即1,1<c  
   
  Top

2 楼zjber(流星飞月)回复于 2001-12-18 14:33:48 得分 0

turbo   c上的结果吗  
  运行是从右向左,先判断b<c为真,值为1,再判a<1为假,不执行以下语句,  
  输出应为     1,2,3  
  Top

3 楼happyforever()回复于 2001-12-18 14:38:05 得分 0

运行结果应该是:121  
  a<b<c相当于(a<b)<cTop

4 楼kingfish(工作很忙,很少来csdn...)回复于 2001-12-18 14:42:43 得分 0

bcb,vc上一样执行两次循环,结果   1   2   1  
  vc上会有警告:  
  '<'   :   unsafe   use   of   type   'bool'   in   operationTop

5 楼hello_asong(蓝色的忧郁)回复于 2001-12-18 15:09:09 得分 0

tc上的结果1,2,1Top

6 楼blood_jz()回复于 2001-12-18 15:26:43 得分 0

while中的    
  a<b<c--->(a<b)<c,其中的a,b值不会变化吗?为什么?  
  Top

7 楼BlueDog(身正方能顶天立地,心和才可容士纳物。)回复于 2001-12-18 15:29:35 得分 0

应写成while(   (a<b   &&   b<c)  
  否则变成了   b<c   ->   TRUE   or   FALSE   (1   or   0)  
        a<   TRUE   or   FALSE  
  Top

8 楼blood_jz()回复于 2001-12-18 15:54:14 得分 0

....faint  
  怎么一会是   (a<b)<c,     一会是   a<(b<c)  
  应该是左结合吧Top

9 楼smart_boy(William)回复于 2001-12-18 16:27:30 得分 0

呵呵,各位高人,在turboc中运行结果为1,2,0呀!Top

10 楼smart_boy(William)回复于 2001-12-18 16:37:26 得分 0

哦,我错了,结果应该是1,2,1  
  可是结果为什么是这个呀?Top

11 楼blood_jz()回复于 2001-12-18 16:44:29 得分 20

因为循环了两次啊  
  第一次:(a<b)<c-->1<3,true   ,执行循环,得到:a=2;b=1,c=2;  
  第二次:(a<b)<c-->0<2,true   ,执行循环,得到:a=1;b=2;c=1;  
  第三次:(a<b)<c-->1<1,false,不执行。  
   
  故,最后值为:1,2,1Top

12 楼zhanghaifeng(海风)回复于 2001-12-18 16:55:14 得分 0

在Turbo   C中应是1,2,3。Top

13 楼smart_boy(William)回复于 2001-12-18 19:01:22 得分 0

呵呵,谢!Top

14 楼ynmazha(蚂蚱)回复于 2001-12-19 01:00:04 得分 0

同意blood_jz()   
   
  int   a=1,b=2,c=3,t;  
  while(a<b<c)  
  {t=a;a=b;b=t;c--;  
    printf("%d%d%d",a,b,c);}  
  printf("%d%d%d",a,b,c);  
  运行结果是212121121  
   
  Top

15 楼smart_boy(William)回复于 2001-12-19 10:12:50 得分 0

怎么不能给分了?Top

16 楼zjber(流星飞月)回复于 2001-12-28 12:15:32 得分 0

到底谁的对Top

17 楼lypx(落叶飘香)回复于 2001-12-28 12:36:20 得分 0

同意ynmazha(蚂蚱)  
   
  int   a=1,b=2,c=3,t;  
  while(a<b<c)  
  {t=a;a=b;b=t;c--;  
  printf("%d%d%d",a,b,c);}  
  printf("%d%d%d",a,b,c);  
  运行结果是212121121  
   
  要说明一下,因为在不同的编译器上运行,有些规则是不一样的,比如TC、VC、BC、都采用了(A<B<C)左结合,但有一些在UNIX上或LINUX上的是右结合的,这一点要特别注意。  
  所以大家在DOS下或WINDOWS下应该结果是121.Top

相关问题

  • C/S OR B/S
  • b/s,c/s
  • C\S ====> B\S
  • C/S------------->B/S
  • 求a^b mod c,其中a,b,c都是1024bit的整数
  • 请教!c/s -> b/s
  • 请教!c/s -> b/s
  • AB=AC->B=C?
  • typedef VOID (*A)(B *C);
  • C/S VS B/S??

关键词

得分解答快速导航

  • 帖主:smart_boy
  • blood_jz

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo