【发布时间】: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