打印

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

[复制链接]
3638|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
499734424|  楼主 | 2012-8-8 14:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wookongbun| | 2012-8-8 14:43 | 只看该作者
两个表达式的意义是不一样的

使用特权

评论回复
板凳
499734424|  楼主 | 2012-8-8 14:51 | 只看该作者
2# wookongbun
能具体些么?
BOSS让我这样做,肯定有他的道理。
我也是不明白其中的道理,才提问的。

使用特权

评论回复
地板
ayb_ice| | 2012-8-8 15:08 | 只看该作者
意义完全不一样的

使用特权

评论回复
5
wookongbun| | 2012-8-8 19:25 | 只看该作者
在C里面,任何表达式都有返回值。将复合表达式按优先级和结合顺序分解,得到每一个表达式的返回值,重复操作直到得到复合表达式的返回值,这样就可以看得出你提供的这两个表达式有什么不同

使用特权

评论回复
6
原野之狼| | 2012-8-8 22:16 | 只看该作者
int result;

for (int num =0; num <100; num++) {
    result = 0 < num < 30;
    printf("%d\n", result);
}
看看结果~

使用特权

评论回复
7
zhaofy521| | 2012-8-9 09:41 | 只看该作者
不是不好,表达意思就不对,和数学表达式是有区别的

使用特权

评论回复
8
zhuanghaiyang| | 2012-8-9 12:23 | 只看该作者
还是头一次见有这么写的

使用特权

评论回复
9
qiujiahongde| | 2012-8-9 12:58 | 只看该作者
第一个是数学表达式吧!!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
499734424 + 1
10
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

使用特权

评论回复
11
ccxlslr| | 2012-8-9 16:35 | 只看该作者
关系运算符是从左到右结合的,
第一个运算合,结果要么0,要么1,但都小于30,也就是说你的表达式永远返回1。
呵呵,猜的,没测过:lol

使用特权

评论回复
12
ccxlslr| | 2012-8-9 16:40 | 只看该作者
C语言很多时候,表达式会写错,但最怕不知道错在哪儿。当你具备一定经验时,再从新看看C语言相关书藉,相信会有不少收获。

还有一类书是专门介绍C的一些容易出错的地方,像表达式啊,宏定义什么的,不要忽视这类书藉。

使用特权

评论回复
13
insignal| | 2012-8-9 22:28 | 只看该作者
if (0 < num < 30)
这是C吗?
建议你找一个pclint之类的lint工具,好好检查一下这种潜在的bug

使用特权

评论回复
14
651927693| | 2012-8-9 22:39 | 只看该作者
0<num的值只能为0或者是1,该结果再做后一个运算,即0<30或1<30,故整个表达式的值为1

使用特权

评论回复
15
菜鸟同学| | 2012-8-10 00:44 | 只看该作者
if (0 < num < 30)
这样写,太牛P了(开玩笑哈),我就没这样写过,见识了,:lol
这个东西看编译器咋个处理,要不就是num>0 表达式成立 为1  
那个1小于30 也就是说当num大于30这个表达式也成立 因为1小于30是真理。
哈哈。  小菜认为这是你一厢情愿写出来的,基础好没咋个夯实。多看看书,看看别人的程序。
你就是最牛P的程序猿。

使用特权

评论回复
16
511| | 2012-8-10 09:23 | 只看该作者
我要是你BOSS 直接把你开掉

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
499734424 + 1
17
dlyt_test001| | 2012-8-10 09:30 | 只看该作者
再看一遍标准C教程吧

使用特权

评论回复
18
zuanze| | 2012-8-10 11:01 | 只看该作者
如果你的num是一个表达式呢?按照运算符的结合优先级,就会出问题的.......

使用特权

评论回复
19
eyesmall| | 2012-8-10 11:27 | 只看该作者
我只是曾经想过,一直没实施,后来就不敢实施了,却被你做了,其实自己试一下就知道了,因为你没有测试所以才来这里问,测试之后自己一想就能明白

使用特权

评论回复
20
whhityang| | 2012-8-10 11:32 | 只看该作者
这个,曾经刚学C语言的时候有这样写表达式的想法,都没敢说出来过,这次终于见到有人这样写出来了。。

使用特权

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

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

粉丝