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

[复制链接]
4495|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,结果是永远成立。。。。。
 楼主| gaohq 发表于 2010-11-15 20:05 | 显示全部楼层
明白了,哈哈,低级错误,写程序太少了。
349264710 发表于 2010-11-15 20:21 | 显示全部楼层
if(5<=x<8)??编译能通过?
liang7143 发表于 2010-11-15 20:30 | 显示全部楼层
if(5
349264710 发表于 2010-11-15 20:21


LS都已经给出解答了,肯定可以通过编译~
求知的电工 发表于 2010-11-15 22:37 | 显示全部楼层
嘿嘿。。。一个 if 中选择判断只对一个做判断不能做两个判断。。
踢球老越位 发表于 2010-11-15 22:43 | 显示全部楼层
if(5
hgjinwei 发表于 2010-11-15 18:35

哈哈,有道理
zhiyonghe 发表于 2010-11-16 09:01 | 显示全部楼层
无论从美观还是从理解 ((x>=5)&&(x<8)) 远胜于5<=x<8

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

语言风格一定得从开始注意……时刻警惕自己的语言风格习惯形成
jack_shine 发表于 2010-11-16 09:20 | 显示全部楼层
路过学习了~~~
老鱼探戈 发表于 2010-11-16 17:26 | 显示全部楼层
4# areshan
4楼正解
kooshare 发表于 2010-11-16 17:42 | 显示全部楼层
以前没注意。。。。
以后要注意了。。。
coody 发表于 2010-11-16 22:37 | 显示全部楼层
不要吝啬括号
程序匠人 发表于 2010-11-16 22:43 | 显示全部楼层
呵呵,这个错误犯得有趣
adams.gh 发表于 2011-7-2 00:24 | 显示全部楼层
牛了个B,这能叫  bug 。
misra 发表于 2011-7-2 22:32 | 显示全部楼层
没资格叫bug
ahgao 发表于 2011-7-3 21:06 | 显示全部楼层
俺写程序时会无视结合顺序而永远使用括号。
mpuhome 发表于 2011-7-3 21:16 | 显示全部楼层
区别是第一个我看不懂,第二个很明白
写成第一个的,不愿意改成第二的,在我们这里会被开掉
misra 发表于 2011-7-3 22:44 | 显示全部楼层
20# mpuhome

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

就是按数轴从左到右写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3767

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部