免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 36479 | 回复: 80
打印 上一主题 下一主题

[C] [C实现]条件表达式的执行顺序是固定的吗? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-09-28 20:59 |显示全部楼层

楼上几位的解释都是对的。

不过在实践中,比较推荐的做法是不要在 if (expr_a || expr_b) 的时候做什么实质性的‘写’操作。因为那样的代码读起来太累,容易隐藏bug。

比如楼主遇到的疑惑和担心,其实是完全可以避免的。之所以会有这麻烦,就是当初写代码的人水平太次,或者太爱卖弄。

建议楼主在有机会的时候,把那块代码改写一下,写成任何人都不会担心的代码,写成不会有任何迷惑的代码。

论坛徽章:
0
2 [报告]
发表于 2012-09-28 22:00 |显示全部楼层
OwnWaterloo 发表于 2012-09-28 21:51
回复 10# starwing83

你这代码太容易隐藏bug了!水平太次了!!太爱卖弄了!!!这不是诚心让他人担心与 ...



唉,不听老人言,吃亏在眼前呀。实践这个事情,你走的路多了自然知道哪里容易摔倒。

你爱怎么写就怎么写吧,反正你写的代码又不是我维护。

论坛徽章:
0
3 [报告]
发表于 2012-09-28 22:01 |显示全部楼层
starwing83 发表于 2012-09-28 21:56
回复 11# OwnWaterloo



盗用我的‘咩。。。’,你知道‘咩。。。。’是什么含义么。。。。

论坛徽章:
0
4 [报告]
发表于 2012-09-28 22:31 |显示全部楼层
OwnWaterloo 发表于 2012-09-28 22:22
回复 13# wwwsq

连C++都没让我摔过几跟头,别说C了,不劳你操心了。




        i = 0;
        int j = (i == 1)?++i:i;

        i = 0;
        int k = (i == 1)?i:++i;

j和k分别是多少?

执行顺序这种事情,知道了固然好,不知道也无所谓。写出别人看不懂的代码,不是水平高,而是水平次。

最好的代码一定是平淡如水,看过去一马平川的。

论坛徽章:
0
5 [报告]
发表于 2012-09-28 22:50 |显示全部楼层
本帖最后由 wwwsq 于 2012-09-28 22:51 编辑
OwnWaterloo 发表于 2012-09-28 22:44
回复 16# wwwsq

喔唷喂,原来这就是你说的让人迷惑的代码?别丢人现眼好吗。



你敢说你没去查手册,也没去写验证代码?

你百分之百确定你凭空想的结果是对的?

那再来一个:

        i = 5;
        int x = (++i = i++);

不要说什么UB不UB的,有人就是这么写。

论坛徽章:
0
6 [报告]
发表于 2012-09-28 22:58 |显示全部楼层
本帖最后由 wwwsq 于 2012-09-28 22:59 编辑
OwnWaterloo 发表于 2012-09-28 22:56
回复 18# wwwsq

我不知道你质疑他人一定要去查手册写验证代码的自信是从哪来的。



        i = 5;
        int x = (++i = i++);

看得懂不?水平次不?

你说这是UB?我觉得未必是UB。你去查查手册看看,是不是UB。


论坛徽章:
0
7 [报告]
发表于 2012-09-28 23:07 |显示全部楼层
OwnWaterloo 发表于 2012-09-28 23:05
回复 20# wwwsq

我去帮你查手册?



你说那个句子是UB,哪个环节UB了?

没看懂吧?水平次吧?

论坛徽章:
0
8 [报告]
发表于 2012-09-28 23:24 |显示全部楼层
OwnWaterloo 发表于 2012-09-28 23:21
回复 22# wwwsq

我看没看懂与我告诉你与否有关系?  我不告诉你就一定是因为我没看懂? 瞧你这思考回路 ...



看不懂吧?水平低吧?

这是你的逻辑啊,看不懂的人才是水平低啊。你看,我随便写写,就写了一堆你看不懂的代码。

还可以随手写更多。


论坛徽章:
0
9 [报告]
发表于 2012-09-28 23:26 |显示全部楼层
starwing83 发表于 2012-09-28 23:23
回复 23# OwnWaterloo




来来来,你水平可能会比较高一点:

        i = 5;
        int x = (++i = i++);

执行完之后,x和i各是多少,为什么?

看得懂不?

论坛徽章:
0
10 [报告]
发表于 2012-09-28 23:30 |显示全部楼层
starwing83 发表于 2012-09-28 23:29
回复 27# wwwsq



按照waterloo同学的看法,看不懂代码的才是水平低。

那段代码你看懂了没?


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP