【问题标题】:Are the parentheses necessary or just used for readability?括号是必需的还是仅用于可读性?
【发布时间】:2013-12-10 20:27:28
【问题描述】:

这两个条件语句的计算方式有什么不同吗?

<cfif Catalog_Id eq 123 or Catalog_Id eq 456 and CatalogType eq 1></cfif>
<cfif (Catalog_Id eq 123 or Catalog_Id eq 456) and CatalogType eq 1></cfif>

据我回忆,条件语句将从左到右进行评估。这意味着将评估 OR 语句,然后评估 AND 条件。

在这种情况下,括号是必需的还是只是为了便于阅读?是否会以相同的顺序在所有语言中进行评估?

更新

出于某种原因,我无法用疲惫的大脑来思考这是如何执行的。一旦有人指出显而易见的事情,我就醒了,想知道我自己怎么没能找出答案。啊。

【问题讨论】:

  • livedocs.adobe.com/coldfusion/8/htmldocs/… 所以是的,有区别。第一个被视为a or (b and c),而第二个覆盖内置优先级
  • 所有语言都差不多。从最里面的括号开始,然后找出路。当你用完括号时,它是从左到右的。
  • 您认为表达式从左到右求值的先入之见是不正确的。 CFML 中有一个明确定义的操作顺序,就像在任何编程语言中一样(或者实际上是数学,这一切都源于此):learn.adobe.com/wiki/display/coldfusionen/…

标签: coldfusion coldfusion-8 coldfusion-10


【解决方案1】:

第一个语句被评估为Catalog_Id eq 123 OR (Catalog_Id eq 456 and CatalogType eq 1)

第二个语句被评估为(Catalog_Id eq 123 or Catalog_Id eq 456) AND CatalogType eq 1

这是两个完全不同的陈述。查看 Adob​​e 的 Operator precedence and evaluation ordering

【讨论】:

  • 马特,我不知道我现在怎么不能围绕这么简单的事情展开思考。我一定是真的累了。你指出了显而易见的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多