C语言复合表达式的不理解?

[复制链接]
 楼主| 499734424 发表于 2012-8-8 14:40 | 显示全部楼层 |阅读模式
今天写程序,用如下语句:if (0 < num < 30)   
{
    ...
}

BOSS说不好,应该写成:
if ((0<num) && (num<30))
{
    ...
}


不大明白这两者区别啊!
wookongbun 发表于 2012-8-8 14:43 | 显示全部楼层
两个表达式的意义是不一样的
 楼主| 499734424 发表于 2012-8-8 14:51 | 显示全部楼层
2# wookongbun
能具体些么?
BOSS让我这样做,肯定有他的道理。
我也是不明白其中的道理,才提问的。
ayb_ice 发表于 2012-8-8 15:08 | 显示全部楼层
意义完全不一样的
wookongbun 发表于 2012-8-8 19:25 | 显示全部楼层
在C里面,任何表达式都有返回值。将复合表达式按优先级和结合顺序分解,得到每一个表达式的返回值,重复操作直到得到复合表达式的返回值,这样就可以看得出你提供的这两个表达式有什么不同
原野之狼 发表于 2012-8-8 22:16 | 显示全部楼层
int result;

for (int num =0; num <100; num++) {
    result = 0 < num < 30;
    printf("%d\n", result);
}
看看结果~
zhaofy521 发表于 2012-8-9 09:41 | 显示全部楼层
不是不好,表达意思就不对,和数学表达式是有区别的
zhuanghaiyang 发表于 2012-8-9 12:23 | 显示全部楼层
还是头一次见有这么写的
qiujiahongde 发表于 2012-8-9 12:58 | 显示全部楼层
第一个是数学表达式吧!!

评分

参与人数 1威望 +1 收起 理由
499734424 + 1

查看全部评分

misra 发表于 2012-8-9 13:31 | 显示全部楼层
if ((0<num) && (num<30)) 这个是按照数轴的方向写的很好

至于:if (0 < num < 30) 干脆是个错的。
(0<num)<30 如果 0<num成立则是1<30就是1
如果0<num不成立就是0<30就是1
ccxlslr 发表于 2012-8-9 16:35 | 显示全部楼层
关系运算符是从左到右结合的,
第一个运算合,结果要么0,要么1,但都小于30,也就是说你的表达式永远返回1。
呵呵,猜的,没测过:lol
ccxlslr 发表于 2012-8-9 16:40 | 显示全部楼层
C语言很多时候,表达式会写错,但最怕不知道错在哪儿。当你具备一定经验时,再从新看看C语言相关书藉,相信会有不少收获。

还有一类书是专门介绍C的一些容易出错的地方,像表达式啊,宏定义什么的,不要忽视这类书藉。
insignal 发表于 2012-8-9 22:28 | 显示全部楼层
if (0 < num < 30)
这是C吗?
建议你找一个pclint之类的lint工具,好好检查一下这种潜在的bug
651927693 发表于 2012-8-9 22:39 | 显示全部楼层
0<num的值只能为0或者是1,该结果再做后一个运算,即0<30或1<30,故整个表达式的值为1
菜鸟同学 发表于 2012-8-10 00:44 | 显示全部楼层
if (0 < num < 30)
这样写,太牛P了(开玩笑哈),我就没这样写过,见识了,:lol
这个东西看编译器咋个处理,要不就是num>0 表达式成立 为1  
那个1小于30 也就是说当num大于30这个表达式也成立 因为1小于30是真理。
哈哈。  小菜认为这是你一厢情愿写出来的,基础好没咋个夯实。多看看书,看看别人的程序。
你就是最牛P的程序猿。
511 发表于 2012-8-10 09:23 | 显示全部楼层
我要是你BOSS 直接把你开掉

评分

参与人数 1威望 +1 收起 理由
499734424 + 1

查看全部评分

dlyt_test001 发表于 2012-8-10 09:30 | 显示全部楼层
再看一遍标准C教程吧
zuanze 发表于 2012-8-10 11:01 | 显示全部楼层
如果你的num是一个表达式呢?按照运算符的结合优先级,就会出问题的.......
eyesmall 发表于 2012-8-10 11:27 | 显示全部楼层
我只是曾经想过,一直没实施,后来就不敢实施了,却被你做了,其实自己试一下就知道了,因为你没有测试所以才来这里问,测试之后自己一想就能明白
whhityang 发表于 2012-8-10 11:32 | 显示全部楼层
这个,曾经刚学C语言的时候有这样写表达式的想法,都没敢说出来过,这次终于见到有人这样写出来了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

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