免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 2007robot
打印 上一主题 下一主题

[C++] 运算符优先级问题 [复制链接]

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
21 [报告]
发表于 2013-06-20 15:51 |只看该作者
回复 18# noword2k

我从来没说 要用 || && 完成if做的事情
|| &&做不到 也不必做到和if一样的功能

我只是说 用&& || 无法避免使用短路原则这个特性
以及
不要因为有短路原则就说这代码可维护性不好
他们没有因果关系   

论坛徽章:
0
22 [报告]
发表于 2013-06-20 15:52 |只看该作者
强烈同意,公司大牛也是如此提醒我们这些后辈的!

回复 20# 塑料袋


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
23 [报告]
发表于 2013-06-20 16:00 |只看该作者
lin5161678 发表于 2013-06-20 15:51
回复 18# noword2k

我从来没说 要用 || && 完成if做的事情


好吧,是4楼的家伙说的。

论坛徽章:
1
子鼠
日期:2013-08-23 16:36:37
24 [报告]
发表于 2013-06-25 23:26 |只看该作者
应该是编译器优化方面的问题,有 || 时,第一个为true时,下面的判断就不执行了

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
25 [报告]
发表于 2013-06-26 09:15 |只看该作者
float001 发表于 2013-06-25 23:26
应该是编译器优化方面的问题,有 || 时,第一个为true时,下面的判断就不执行了

用if的话,编译器也能帮你优化——当然是在条件恒为true的情况下。

论坛徽章:
0
26 [报告]
发表于 2013-06-26 12:35 |只看该作者
短路求值是语言特性,不是编译器优化的问题

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
27 [报告]
发表于 2013-06-26 13:18 |只看该作者
本帖最后由 w_anthony 于 2013-06-26 13:20 编辑

回复 22# 2007robot


    20L的说法有严重误导性,首先你应该知道w=i++||j++&&k++和w=(i++||(j++&&k++))是等效的,如果根据20L这个模棱两可的说法,可能很多人会认为还是要先计算j++&&k++。
但是就w=(i++||(j++&&k++))这个式子考虑,运算过程必定是从左到右,你就不难理解为什么只计算了i++,而后面那部分并没有被计算,因为此时i++和(j++&&k++)这个整体是同级的,先左后右计算。
要避免出现这种逻辑上的多余思考,那么编写代码之初就人为加上括号是最合适的方法。
如果没有括号,那么你就在合适的优先位置加上括号,再结合从左到右的运算原则,那么所有的计算顺序问题都会迎刃而解。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
28 [报告]
发表于 2013-06-26 14:48 |只看该作者
根本就不应该写出w=i++||j++&&k++ 或 w=(i++||(j++&&k++)) 这样的狗屎代码。
变量i要加1,就老老实实的 "i加加分号" 回车结束。
除非有非常充分的理由,否则不要把++、--和其他语句混在一起使用。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
29 [报告]
发表于 2013-06-26 15:34 |只看该作者
w_anthony 发表于 2013-06-26 13:18
回复 22# 2007robot


你为什么不写
w=i++||j++&&k++^a--&~b++||c--&&d++^e--|f++&~g-- .............

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
30 [报告]
发表于 2013-06-26 16:37 |只看该作者
lin5161678 发表于 2013-06-20 12:54
回复 11# littledick

看 会不会用而已



同学, 请回答如下问题:

- 你工作几年了?

- 你在公司的title是什么?

- 你对自己的薪水满意吗?


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP