随笔 - 171  文章 - 257  trackbacks - 0
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(33)

随笔分类(225)

随笔档案(171)

相册

技术

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 441184
  • 排名 - 48

最新随笔

最新评论

阅读排行榜

评论排行榜

很久没有碰c/c++了, 近两年都是java为主, 偶尔用一下c/c++

(a<b<c) 这种写法我以前从来没有用过. 今天突然有网友提起来, 我习惯性的在脑海中把其翻译成
(a<b && b<c) 酿成了一些小错误. 我悔过了.

网友给我扔来了c99的标准
§6.5.9 第86页 89) The expression a<b<c is not interpreted as in ordinary mathematics. As the syntax indicates, it
means (a<b)<c; in other words, ‘‘if a is less than b, compare 1 to c; otherwise, compare 0 to c’’.

意思也就是说. (a<b<c) 按照从左到右的方式开始运算
1.( (a<b) < c )
2.a<b ?  TRUE : FALSE;
3.所以, 最终表达式运算的是 (1<c) 或者 (0<c)

C语言中. 虽然任何不等于0的数为真. 但是实际在宏定义中 TRUE == 1  FALSE == 0;
posted on 2008-10-23 16:35 Khan 阅读(2649) 评论(5)  编辑 收藏 引用 所属分类: GCC/G++跨平台开发

FeedBack:
# re: c语言(a < b < c )的陷阱 2008-10-24 07:28 Tony Bai
这种代码我还真在公司的一次代码评审时遇到过,而且还是一名老员工的代码,呵呵。  回复  更多评论
  
# re: c语言(a < b < c )的陷阱 2008-10-24 13:56 Khan's Notebook
这种代码确实要避开. 不过有时候还是能带来一些便利的

我公司不少老员工是c精,
写的代码中有不少特殊语法, 结构很精简, 但是我很多都读不懂, 所以我几乎无法维护.  回复  更多评论
  
# re: c语言(a < b < c )的陷阱 2008-10-25 16:52 金山词霸2008
a<b<c 还真的能用?我一直认为是错的。  回复  更多评论
  
# re: c语言(a < b < c )的陷阱[未登录] 2009-07-23 11:39 C
小弟刚学C的时候也被阴过 ⊙﹏⊙b汗
#include <stdio.h>
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}

刚开始我总都弄不明白为什么是0,以为是1  回复  更多评论
  
# re: c语言(a < b < c )的陷阱 2009-08-22 20:41 Rye
有些陷阱的确一不小心就掉下去了,比如 -1 < 0U 为 false  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理