|
|
1
20
就“现实世界”而言,公平地说:
所以,除了
|
|
|
2
5
另一个相关的bug来源是舍入错误是如何累积的。这本身不是一个运算符优先顺序问题,而是一个惊喜的来源,当您以算术上等价的方式重新排列操作数后得到不同的结果。这是一个sun.com版的David Goldberg's What Every Computer Scientist Should Know About Floating-Point Arithmetic . |
|
|
3
4
引用(来自 Java Language Specification §15.7 )应该在 Evaluation Order . 如讨论 here ,该部分涉及 估价单 ,与操作员无关 优先 (或) 结合性 ) 优先级和关联性影响 结构 表达式树(即哪些运算符作用于哪些操作数),而“计算顺序”只影响表达式树的顺序。 横穿 计算表达式时。除非某些子表达式具有影响其他子表达式结果(或副作用)的副作用,否则计算顺序(或“遍历顺序”)不起任何作用。
例如,如果x最初=1,则表达式
有问题的引文及其上下文…
……劝阻读者从爪哇的左到右 估价单 (如上例所示)。它不鼓励不必要的括号。 编辑:资源: Java operator precedence table 它还可以作为包含语法的JLS部分的索引,从中可以推断每个优先级。 |
|
|
4
2
此外,不要忘记逻辑&&和是快捷方式运算符,请避免以下情况:
如果sideffect1()的计算结果为true,则不会执行sideffect2()。同样适用于&和FALSE。这并不完全与进位有关,但在这些极端情况下, 异能性 也可能是一个重要的方面,通常是真正无关的(至少就我而言) |
|
|
5
2
这个
JLS
不提供显式运算符优先级表;当
JLS
描述各种运算符。例如,语法
这意味着加法运算符(
|
|
|
6
1
在我看来,事实是“大多数程序员”认为“大多数其他程序员”不知道或不记得运算符优先级,所以他们沉溺于“插入缺少括号”的所谓“防御编程”,只是为了“澄清”这一点。记住这三年级的东西是不是一个真正的问题是另一个问题。这一切完全是在浪费时间,如果有什么让事情变得更糟,这也是可以争辩的。我个人的观点是,尽可能避免冗余语法,计算机程序员应该知道他们正在编程的语言,也可能提高他们对同事的期望。 |