打印

5<=x<8 与 ((x>=5)&&(x<8)) 的区别

[复制链接]
3361|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaohq|  楼主 | 2010-11-15 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天查一个程序的BUG
发现一个问题
if(5<=x<8)
--执行A--
else
--执行B--

不好使

改为
if((x>=5)&&(x<8))
--执行A--
else
--执行B--
后好使了
用的MCU是Atmegal 16  
用iccavr7 编译的。

相关帖子

沙发
qjmxxgui| | 2010-11-15 18:20 | 只看该作者
第一个。。。我记得C语言没有这个语法?

使用特权

评论回复
板凳
hgjinwei| | 2010-11-15 18:35 | 只看该作者
if(5<=x<8)  在C的世界里恒成立!

使用特权

评论回复
地板
areshan| | 2010-11-15 19:49 | 只看该作者
如果是右结合,先判断X<8,成立则为1,否则为0,再判断5<=0或1,永远不成立。。。。。
如果是左结合,先判断X=>5,成立则为1,否则为0.再判断0或1是否<8,结果是永远成立。。。。。

使用特权

评论回复
5
gaohq|  楼主 | 2010-11-15 20:05 | 只看该作者
明白了,哈哈,低级错误,写程序太少了。

使用特权

评论回复
6
349264710| | 2010-11-15 20:21 | 只看该作者
if(5<=x<8)??编译能通过?

使用特权

评论回复
7
liang7143| | 2010-11-15 20:30 | 只看该作者
if(5
349264710 发表于 2010-11-15 20:21


LS都已经给出解答了,肯定可以通过编译~

使用特权

评论回复
8
求知的电工| | 2010-11-15 22:37 | 只看该作者
嘿嘿。。。一个 if 中选择判断只对一个做判断不能做两个判断。。

使用特权

评论回复
9
踢球老越位| | 2010-11-15 22:43 | 只看该作者
if(5
hgjinwei 发表于 2010-11-15 18:35

哈哈,有道理

使用特权

评论回复
10
zhiyonghe| | 2010-11-16 09:01 | 只看该作者
无论从美观还是从理解 ((x>=5)&&(x<8)) 远胜于5<=x<8

我看很多人的这种问题,不单单是C用的少的问题

语言风格一定得从开始注意……时刻警惕自己的语言风格习惯形成

使用特权

评论回复
11
jack_shine| | 2010-11-16 09:20 | 只看该作者
路过学习了~~~

使用特权

评论回复
12
老鱼探戈| | 2010-11-16 17:26 | 只看该作者
4# areshan
4楼正解

使用特权

评论回复
13
kooshare| | 2010-11-16 17:42 | 只看该作者
以前没注意。。。。
以后要注意了。。。

使用特权

评论回复
14
coody| | 2010-11-16 22:37 | 只看该作者
不要吝啬括号

使用特权

评论回复
15
程序匠人| | 2010-11-16 22:43 | 只看该作者
呵呵,这个错误犯得有趣

使用特权

评论回复
16
adams.gh| | 2011-7-2 00:24 | 只看该作者
牛了个B,这能叫  bug 。

使用特权

评论回复
17
misra| | 2011-7-2 22:32 | 只看该作者
没资格叫bug

使用特权

评论回复
18
ahgao| | 2011-7-3 21:06 | 只看该作者
俺写程序时会无视结合顺序而永远使用括号。

使用特权

评论回复
19
mpuhome| | 2011-7-3 21:16 | 只看该作者
区别是第一个我看不懂,第二个很明白
写成第一个的,不愿意改成第二的,在我们这里会被开掉

使用特权

评论回复
20
misra| | 2011-7-3 22:44 | 只看该作者
20# mpuhome

推荐写成  ((5 <= x)&&(x<8))

就是按数轴从左到右写

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3763

帖子

5

粉丝